• 締切済み

exec()にで別PHPをバックグラウンドで起動させるには

どうしたらよいか分からずに困っております…。 例えば次の様な記述が実行できません。 exec("c:\php\php.exe c:\test\test.php"); 次の様にperlファイルを起動しようとすると、それは問題なく動作します。 exec("c:\perl\bin\perl.exe c:\test\test.cgi"); すみませんが、どなたかヒントだけでも頂けたら嬉しいです。 よろしくお願いいたします。

みんなの回答

  • hojiyoshi
  • ベストアンサー率61% (8/13)
回答No.2

純粋にコマンドプロンプトにて、下記は実行できますか? c:\php\php.exe c:\test\test.php できなければ、exec関数に渡している値がNGということになります。 よくあるパターンとして、 ・php.exeのパスがおかしい ・test.php自体にバグがある。 なお、execにて、実行できていないと思いつつ、実は実行されている場合もあります。標準出力からの値を受け取って調べてみてはいかがでしょう? また、exec以外にもsystem("c:\php\php.exe c:\test\test.php");や実行演算子`c:\php\php.exe c:\test\test.php`を使う方法もあります。 http://hain.jp/index.php/tech-j/2006/08/30/php_exec_system_popen_paththru

heepoo9
質問者

お礼

コマンドプロンプトでは問題なく実行されます。 execの返り値も調べていたのですが、どうにも実行されなくて…。 test.php自体は間違え様の無いすごく単純なものでした。 ところでご回答どうもありがとうございました。 なんだからブラウザからそのexecの記述のあるファイルを実行していたのが原因だったみたいです。バッチで起動すると問題なく動きました。 systemやバックチック演算子など他のシステム関数も全て試しましたが、同じ結果でした。 形の上では問題は解決したのですが…原因をきちんとは理解出来ないのが切ない状態です…^^; どうもありがとうございました。

  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

単にエスケープし忘れということは有りませんか? exec("c:\\php\\php.exe c:\\test\\test.php");

heepoo9
質問者

お礼

エスケープは大丈夫です。 ところでご回答どうもありがとうございました。 なんだからブラウザからそのexecの記述のあるファイルを実行していたのが原因だったみたいです。バッチで起動すると問題なく動きました。