web-dev-qa-db-ja.com

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

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

Webからアクセスされるphpinfo.phpファイルがあるので、Germanがインストールされていることがわかります。ただし、_phpinfo.phpgrepGermanを使用して、コマンドラインからphp phpinfo.phpを実行すると、見つかりません。したがって、両方のphpが異なります。 phpがインストールされているGermanを実行するスクリプトを実行する必要があります。

これどうやってするの?

64
Siddharth

更新:

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

LoadModule phpで始まる行を探してください...おそらくmodsまたはそのような名前の設定ファイル/ディレクトリがあり、そこから開始します。

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

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を実行します。

131
Sampo Sarrala

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

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

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

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

2
Shannon White

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

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