2012-01-02 15 views
3

こんにちはイムbashスクリプトからPHPファイルを実行しようとエラーのbashからPHPスクリプトを実行する

#!/bin/sh 

php ./func.php 

func.phpファイルが

<?php 

echo "php file"; 

のようにして出力 PHP Warning: Module 'apc' already loaded in Unknown on line 0

EDITように見えながら: そしておそらくUはPHPファイルにパラメータを渡す方法を教えてくれますか?

+2

は、参照のために(それは例えば、 'の/ etc/PHP5/CLI/php.ini'に配置されることになるUbuntuシステム上で)あなたは、CLIコンフィギュレーションファイルをチェックしてみましたモジュール 'apc'に?そしてこれは完全な 'func.php'ファイルですか?私には不完全に見えます(少なくとも '?>'を閉じることはありません) – codeling

+3

@nulllathotep閉じる '?>'を残すことはベストプラクティスです(http://stackoverflow.com/a/4453835/35070)。 – phihag

+0

@phihag:ヒントありがとう!私はベストプラクティスを読むべきだと思っています:) – codeling

答えて

8

Unknown on line 0のエラーは、設定に欠陥があることを意味します(これは、bashとは関係なく、プログラムを直接実行すると同じメッセージが表示されます)。

あなたのケースでは、あなたのPHP構成にextension=apc.soという2つのインスタンスがあります。これらを見つけるには grep apc.so /etc/php5/cli/ -rを使用してください。

+0

完璧、ありがとう! – ChocoDeveloper

+0

ありがとう+1!この重複する行がどこから来たのか分かりませんか?私も... active = 1行がiniファイルに重複していました。 – Benj

2

php.iniは、CLIモードで使用されている見つけますしかし、それはロードされていた別のapcファイルがあったので、単に "extension = apc.so"をgreppingするだけで問題が明らかにならなかった。

php --info | grep -i apc 
PHP Warning: Module 'apc' already loaded in Unknown on line 0 
Additional .ini files parsed => /etc/php5/cli/conf.d/apc.ini 

モジュールがロードされていたので、だから、あなたは単にあなたのapacheとCLIのphp.iniのconfigsの両方から「= apc.so拡張子」を削除する必要があります。

1

すべての二重宣言のためにそのphp.iniの内容を確認してください。

+0

'php --info | grep -i apc'はこのトリックをやった – Dmitriy

0

私の場合(DebianベースのLinuxの亜種であるUbuntuで)、私は/etc/php5/conf.d/apc.iniという2つのコピーを持っていました。私が最初にapcをインストールしたときに私がそこに置いたものがあった。また、/etc/php5/conf.d/20-apc.iniから../mods-available/apc.iniへのシンボリックリンクも見つかりました。

phpのアップグレードによって、このモジュールが(Debianの方法で)シンボリックリンクが有効になっているようです。私はapc.iniのコピーを削除しました。私は今、mods-availableにシンボリックリンクされているものを使用しています。

さらに、UbuntuとDebianの下でPHPモジュールを有効または無効にするコマンドラインプログラムがあります。ここでAPCを有効または無効にするコマンドです:

sudo /usr/sbin/php5enmod apC# Creates the symlink in /etc/php5/conf.d that enables APC 
sudo /usr/sbin/php5dismod apC# Deletes the symlink in /etc/php5/conf.d that disables APC 
関連する問題