- 締切済み
PHPのexecで別PHPの実行
「エックスサーバー」というレンタルサーバーを使用しています。 PHPファイルの中で[exec()]関数を用いて、別ファイルのPHPを実行させたいと考えております。 ・PHPバージョン:5.3.3 ・ドメイン:XXXXX.xsrv.jp 以下の内容(ProgramA)を実行すると、 [exec()]関数で呼び出している処理(ProgramB)が実行されていないように思います。 どのように修正したら、(ProgramB)が実行されるのでしょうか? どうかご教示くださいませ。 ---ProgramA.php (起動する側)---------------------- <?php exec('/usr/bin/php5.3 /home/XXXXX(ユーザー名)/xsrv.jp(ドメイン)/public_html/AAA/BBB/ProgramB.php'); echo "test!"; ?> ※ProgramA.phpを実行すると、ブラウザには「test!」という文字列が表示されます。 ※ProgramA.phpのパーミッションは755に設定されています。 ---ProgramB.php (起動される側)---------------------- <?php echo"HelloWorld"; ?> ※ProgramB.phpのパーミッションは755に設定されています。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- t_ohta
- ベストアンサー率38% (5238/13705)
たぶん ProgramB は実行されています。 exec() で ProgramB を実行しても、結果は exec() の戻り値として受け取れるだけで ProgramA の出力には反映されません。 echo exec('/usr/bin/php5.3 /home/XXXXX(ユーザー名)/xsrv.jp(ドメイン)/public_html/AAA/BBB/ProgramB.php'); とすれば「HelloWorld」が出力される可能性がありますが、exec() の戻り値は標準出力で受け取れるデータの最終行だけなので、複数行の結果を返す外部プログラムを実行した場合望む結果は得られないでしょう。 たぶん、質問者さんのやりたいことは include('/public_html/AAA/BBB/ProgramB.php'); で実現できるのではないでしょうか。
- agunuz
- ベストアンサー率65% (288/438)
RTFM. http://www.php.net/manual/ja/function.exec.php >実行されたコマンドの出力を取得するには、必ず >output パラメータを設定・使用してください。 実行したプログラムの出力は、execの第二引数(配列)に格納されます。