[PHP-users 26497] exec関数での部コマンド実行が出来ない。

神 谷 djr_kamiya @ hotmail.com
2005年 8月 18日 (木) 22:00:44 JST


神谷@sswです

現在以下の環境で開発を行っています。
WindowsXP HomeEdition SP2
Apache-1.3.33+mod_ssl+open_ssl
PHP-5.0.3
postgresql-8.0.3
Smarty-2.6.10

Cで作成した外部コマンドを用意しており、コマンドの結果は標準
出力するようにしています。(コマンドラインでは動作確認済み)


PHPからはexecで外部コマンドを実行し、標準出力結果を戻り値と
して処理する方法をとっています。

ところが、下記のphp.iniの設定で、結果が一切返ってこないのです。
(エラーも出力されない、$l_iStatには1が返ってきます。)

[php.ini]
safe_mode = On
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir ="C:/Program/Project Web/bin"


[test.php]
$l_sRdbType = exec( 'DbParmGet.exe -D Type 2>&1',$l_Rtn, $l_iStat );
print "1.".$l_sRdbType."<br />\n";
print "2.".$l_iStat."<br />\n";
print "3.".$l_Rtn."<br />\n";
var_dump($l_Rtn);
print ""."<br />\n";
exit;


php.iniの内容はそのままで、execの実行コマンドを dir に変更
しても$l_sRdbType、$l_Rtnには値が帰ってきません。


safe_mode = Off
の状態で dir を実行すると値が帰ってきます。

しかし
safe_mode = Off
の状態で、DbParmGet.exeをApacheのドキュメントルートに配置し、
exeを実行した場合、$l_Rtnには

array(2) {
 [0]=> string(51) "'confread.exe' は、内部コマンドまたは外部コマンド、"
 [1]=> string(67) "操作可能なプログラムまたはバッチ ファイルとして認識されて
いません。"
 }
のようにエラーメッセージが返ってきます。


正直、試すことは試したつもりなのですが、他に確認すべき点があるか
ご存知の方、ご指摘いただけないでしょうか?

よろしくお願いします。

_________________________________________________________________
無料でメールボックス250MBの 「MSN Hotmail」 
http://promotion.msn.co.jp/hotmail/fortune/input_un.asp 



PHP-users メーリングリストの案内