プロが教える店舗&オフィスのセキュリティ対策術

どうしたらよいか分からずに困っております…。

例えば次の様な記述が実行できません。

exec("c:\php\php.exe c:\test\test.php");

次の様にperlファイルを起動しようとすると、それは問題なく動作します。

exec("c:\perl\bin\perl.exe c:\test\test.cgi");

すみませんが、どなたかヒントだけでも頂けたら嬉しいです。

よろしくお願いいたします。

A 回答 (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_e …
    • good
    • 0
この回答へのお礼

コマンドプロンプトでは問題なく実行されます。
execの返り値も調べていたのですが、どうにも実行されなくて…。
test.php自体は間違え様の無いすごく単純なものでした。

ところでご回答どうもありがとうございました。

なんだからブラウザからそのexecの記述のあるファイルを実行していたのが原因だったみたいです。バッチで起動すると問題なく動きました。
systemやバックチック演算子など他のシステム関数も全て試しましたが、同じ結果でした。

形の上では問題は解決したのですが…原因をきちんとは理解出来ないのが切ない状態です…^^;

どうもありがとうございました。

お礼日時:2009/03/24 02:55

単にエスケープし忘れということは有りませんか?



exec("c:\\php\\php.exe c:\\test\\test.php");
    • good
    • 0
この回答へのお礼

エスケープは大丈夫です。

ところでご回答どうもありがとうございました。

なんだからブラウザからそのexecの記述のあるファイルを実行していたのが原因だったみたいです。バッチで起動すると問題なく動きました。

お礼日時:2009/03/24 02:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!