コマンドラインからPHPスクリプトを実行する


83

Webスクリプトの解析に使用されるPHPインタープリターを使用して、コマンドラインからPHPスクリプトを実行するにはどうすればよいですか?

私が持っているphpinfo.phpウェブ番組からアクセスされたファイルGermanがインストールされています。ただし、phpinfo.php-php phpinfo.phpgrepを使用してコマンドラインからを実行するとGerman、それが見つかりません。したがって、両方のphpは異なります。インストールさphpれているスクリプトを実行する必要がありGermanます。

これどうやってするの?


1
それを実行php -iして解析するだけです
Lawrence Cherone 2012

1
どういう意味ですか?それにもかかわらず、私はそれをしましたが、何もしませんでした
Siddharth 2012

1
もっと追加してくださいインストールしたWebサーバーの詳細から例の加算出力のために、ソフトウェアをphpinfo();あなたの質問に。また、私の答えを更新しました。
サンポサララ-codidact.org 2012年

回答:


162

更新:

誤解した後、私はついにあなたがやろうとしていることを手に入れました。サーバー構成ファイルを確認する必要があります。apache2または他のサーバーソフトウェアを使用していますか?

LoadModule php...で始まる行を探します。おそらく、名前が付けられた構成ファイル/ディレクトリmodsなどがあり、そこから始めます。

Webサーバーからの出力を確認php -r 'phpinfo();' | grep phpphpinfo();、Webサーバーからの行を比較することもできます。

phpインタラクティブに実行するには:

(コンソールでコードを貼り付け/書き込むことができるように)

php -a

ファイルを解析してコンソールに出力するには、次のようにします。

php -f file.php

ファイルを解析して別のファイルに出力します。

php -f file.php > results.html

ほかの何かが必要ですか?

1行などの小さな部分のみを実行するには、次を使用できます。

php -r '$x = "Hello World"; echo "$x\n";'

Linuxを実行している場合はman php、コンソールで実行します。

fpmを介してphpを実行する必要がある/実行したい場合は、clifcgiを使用してください

SCRIPT_NAME="file.php" SCRIP_FILENAME="file.php" REQUEST_METHOD="GET" cgi-fcgi -bind -connect "/var/run/php-fpm/php-fpm.sock"

ここで、/ var / run / php-fpm /php-fpm.sockはphp-fpmソケットファイルです。


4
いいえ。問題は、システムに複数のphpがあることです。Webスクリプトの解析にどのphpが使用されているかを調べる必要があります。コンソールからphpを実行すると、クラスが見つかりません。ただし、Webからそのスクリプトを呼び出すと、その問題は発生しません。つまり、使用するPHPが違うということですね。
シッダールス2012

2
@Siddharthサーバーのs / w構成から確認する必要があります。サーバーの詳細を質問に追加します。
サンポサララ-codidact.org 2012年

2
はい。どうすれば確認できますか?要するに、コマンドラインから正しいphpを使用するにはどうすればよいですか?
シッダールス2012

2
Linuxでは、を使用which phpして、デフォルトで実行している実行可能ファイルを通知できます。別の実行可能ファイルを使用するには、あなたが使用したい実行ファイルのフルパスを指定する必要があります/path/to/specific/php -f file.php > results.html
エミリオP.

1
素敵な詳細、説明のために+1。ただ、ここでコメントに、環境にも時計は多分あなたは、スクリプトがそのphp.exeに同じディレクトリにある場合でも、完全なディレクトリ・パスを使用する必要があり、varsは
レアンドロ

3

私はWindowsでこの問題の解決策を探していましたが、環境変数に問題がない場合は、完全なディレクトリを配置する必要があるようです。例えば。PHPと同じディレクトリにファイルがある場合:

F:\myfolder\php\php.exe -f F:\myfolder\php\script.php

コマンドプロンプトからこの逐語的に実行する場合>、最初にはおそらく-f ...(エラーの可能性が高い)の出力をphp.exeファイルにリダイレクトし、コンテンツをワイプします。
mwfearnley

2

SuSEには、PHP用の2つの異なる構成ファイルがあります。1つはApache用で、もう1つはCLI(コマンドラインインターフェイス)用です。/ etc / php5 /ディレクトリには、「apache2」ディレクトリと「cli」ディレクトリがあります。それぞれに「php.ini」ファイルがあります。これらのファイルは同じ目的(php構成)ですが、PHPを実行する2つの異なる方法に適用されます。これらのファイルは、とりわけ、PHPが使用するモジュールをロードします。

OSが類似している場合、これら2つのファイルはおそらく同じではありません。Apache php.iniはおそらくgearmanモジュールをロードしていますが、cliphp.iniはロードしていません。モジュールがインストールされたとき(自動または手動)、おそらくApachephp.iniファイルのみが更新されました。

Apache php.iniファイルをcliディレクトリにコピーするだけで、CLI環境をApache環境とまったく同じにすることができます。

または、Apacheファイルでgearmanモジュールをロードする行を見つけて、それだけをCLIファイルにコピーして貼り付けることもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.