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

sa@zxcb.net sa @ zxcb.net
2005年 8月 19日 (金) 04:06:35 JST


高橋と申します。

>safe_mode_exec_dir ="C:/Program/Project Web/bin"
とありますのでDbParmGet.exeがこのディレクトリにありますでしょうか?
但し空白のディレクトリ、ファイル名はだめだったと思います。
私の環境はXP,PHP 5.0.3CLIですが確認したところ
'C:/Program/Project'が実行ファイルであると認識しているようです。
2バイトや空白はディレクトリ、ファイル名に使用しないほうが安全かと。

>php.iniの内容はそのままで、execの実行コマンドを dir に変更
>しても$l_sRdbType、$l_Rtnには値が帰ってきません。
上記パスに'dir'という実行ファイルがないためです。内部コマンドは
実行できないと思います。(safe_mode=Offでは実行できます)
また、実行すべきファイルが無い場合リダイレクトではなくコンソールに直接
出力しているようで戻り値は空になるようです。

safe_mode = Offの場合は実行ファイルにパスを付けてみてください。
DOSでいうところの環境変数pathを探してはくれません。
この場合も空白は不可だと思います。

ちなみにexec()はWindowsのpif(ショートカット)やbatなども動きそうです。
もし、ディレクトリ名など変更できないのであればこちらで解決できるかも
しれません。batファイルであればsafe_mode_exec_dir以外の実行ファイル
も実行できました。

以上




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