2011-12-30 15 views
3

PHPでシェルファイルを実行するにはどうすればよいですか?PHPを使用したbashスクリプトから戻り値を取得する

私はsync.shと呼ばれるファイルを持っていますので、どのようにファイルをPHPで実行し、実行を完了した後に応答を取るのですか?私はshell_exec()がファイルをトリガーするのに役立つだろうと思うが、どのようにスクリプトが正常に完了したかどうかの応答を得ることができますか?

答えて

3

:エラーが発生した場合

リターンは実行されたコマンドまたはNULLから

出力値。

この関数の戻り値を取得するだけです。

$result = shell_exec('sync.sh'); 

$resultには、必要なものが含まれます。

+0

問題は、私の同期ファイルが/ home/administrator/scriptsにあり、コマンドが外部のwwwフォルダにアクセスするためですか? –

+0

@SubhojitMukherjee PHPがどのように設定されているかによって異なりますが、通常は可能です。スクリプトへの絶対パスを渡すだけです。 – Ikke

5

exec()の機能をご覧ください。シェルスクリプトから終了コードを保持するreturn_varを渡すことができます。注意する

$out = array(); 
$status = -1; 

exec('/path/to/sync.sh', $out, $status); 

if ($status != 0) { 
    // shell script indicated an error return 
} 

ことの一つは、スクリプトがユーザーとして、独自のない、Webサーバの権限で実行されるということです。ユーザーがいないことを保証するために)(、ユーザが入力したデータをこの関数に渡すことを許可する場合

( にescapeshellargを使用)またはescapeshellcmd:

また、ドキュメントのセキュリティ関連の警告に耳を傾けるようにしてください任意のコマンドを実行するには、システム をトリックします。 documentationによると

+0

これは私にエラー126を与えます。私はコマンドと私のスクリプト/ home/administrator/scriptsにあるこのパスを実行するには管理者権限が必要だと思います。私はWebサーバーは/ var/wwwフォルダの外部にアクセスする許可を与えていないと思う。それは正しい? –

+0

@SubhojitMukherjeeウェブサーバーで実行できるようにスクリプトのアクセス許可を設定しましたか? (たとえば、「chmod o + rx sync.sh」)。スクリプトは、あなたのユーザーアカウントから実行すると動作しますか? – nsanders

+0

'sh sync.sh'を試してください。これは、sync.shを実行可能にする必要はありません。 – Ikke