GNU/Linux >> Linux の 問題 >  >> Linux

PHP から Python スクリプトを実行する

passthru の使用をお勧めします 出力バッファを直接処理:

ob_start();
passthru('/usr/bin/python2.7 /srv/http/assets/py/switch.py arg1 arg2');
$output = ob_get_clean(); 

Ubuntu Server 10.04 でテスト済み。 Arch Linux でも役立つことを願っています。

PHP では、shell_exec 関数を使用します:

<ブロック引用>

シェル経由でコマンドを実行し、完全な出力を文字列として返します。

実行されたコマンドからの出力を返します。エラーが発生した場合、またはコマンドが出力を生成しない場合は NULL を返します。

<?php 

$command = escapeshellcmd('/usr/custom/test.py');
$output = shell_exec($command);
echo $output;

?>

Python ファイル test.py に 、最初の行でこのテキストを確認してください:(シバンの説明を参照):

#!/usr/bin/env python
<ブロック引用>

Python の複数のバージョンがインストールされている場合、/usr/bin/env は、使用されるインタープリターが環境の $PATH の最初のものであることを保証します。別の方法は、#!/usr/bin/python; のようなものをハードコードすることです。それは問題ありませんが、柔軟性に欠けます。

Unix では、解釈されることを意図した実行可能ファイルは、使用するインタープリターを #! で示すことができます。最初の行の先頭に、その後にインタープリター (および必要なフラグ) が続きます。

もちろん、他のプラットフォームについて話している場合、このルールは適用されません (しかし、その「シェバン行」は害を及ぼすものではなく、そのスクリプトを Linux や Mac などの Unix ベースのプラットフォームにコピーする場合に役立ちます)。 ).

<ブロック引用>

これは、Unix で実行可能 (chmod +x myscript.py) にしてから直接実行する場合に適用されます:

UNIX タイプのプラットフォームで実行可能ファイルを作成するには:

chmod +x myscript.py

また、Python ファイルには正しい権限 (PHP スクリプトがブラウザーまたは curl で実行される場合はユーザー www-data / apache の実行) が必要であり、"実行可能" である必要があります。また、すべてのコマンドは .py に ファイルには正しい権限が必要です。

PHP マニュアルから引用:

<ブロック引用>

aunix タイプのプラットフォームで shell_exec を使用しようとしていて、それを機能させることができないように思われる方への簡単なリマインダーです。 PHP はシステム上で Web ユーザー (通常は Apache の場合は www) として実行されるため、shell_exec コマンドで使用しようとしているファイルやディレクトリに対する権限が Web ユーザーにあることを確認する必要があります。


コマンドのリターンステータスを知りたい場合やstdout全体を取得したい場合 できる出力 実際に exec を使用 :

$command = 'ls';
exec($command, $out, $status);

$out すべての行の配列です。 $status 返却状況です。デバッグに非常に便利です。

stderr も見たい場合 出力は proc_open で再生するか、単に 2>&1 を追加することができます あなたの $command に .後者は多くの場合、物事を機能させ、「実装」するのに十分です.


Linux
  1. シェルからPythonスクリプトを実行する方法

  2. PHP スクリプト - Linux と Windows のどちらで実行されているかを検出しますか?

  3. 引数を指定して bash から Python スクリプトを呼び出す

  1. PHP スクリプトをテストする方法

  2. JavaからPythonスクリプトを実行するには?

  3. ランチャーからルートとして Pycharm を実行する

  1. Linux bashでphpスクリプト(php関数)を実行する

  2. バックグラウンド プロセスとしてコマンド ラインから PHP スクリプトを実行する

  3. PHPスクリプトを実行するためのGodaddy cronジョブのセットアップ