みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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に設定されています。

投稿日時 - 2014-04-09 14:07:40

QNo.8547800

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

たぶん 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');

で実現できるのではないでしょうか。

投稿日時 - 2014-04-09 14:17:28

ANo.1

RTFM.
http://www.php.net/manual/ja/function.exec.php
>実行されたコマンドの出力を取得するには、必ず
>output パラメータを設定・使用してください。

実行したプログラムの出力は、execの第二引数(配列)に格納されます。

投稿日時 - 2014-04-09 14:16:44

あなたにオススメの質問