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

神 谷 djr_kamiya @ hotmail.com
2005年 8月 19日 (金) 14:04:19 JST


神谷@sswです

PHP及びApacheを正規(?)のパッケージに変更して動作させてみました。
ところが結果が変わらないので、再度ご指摘をお願いしたいと思います。

なお、同様の処理をWindows2000SVで動作させたのですが、そちらで
は正常に動作したため、OSに起因する想定外の動作という可能性が
出てきました。


高橋さん、レスありがとうございます。
>とありますのでDbParmGet.exeがこのディレクトリにありますでしょうか?
>但し空白のディレクトリ、ファイル名はだめだったと思います。
>私の環境はXP,PHP 5.0.3CLIですが確認したところ
>'C:/Program/Project'が実行ファイルであると認識しているようです。
>2バイトや空白はディレクトリ、ファイル名に使用しないほうが安全かと。
c:/temp/bin
に該当モジュールをコピーし、safe_mode_exec_dirを変更してみましたが
結果は変わりませんでした。

>safe_mode = Offの場合は実行ファイルにパスを付けてみてください。
>DOSでいうところの環境変数pathを探してはくれません。
>この場合も空白は不可だと思います。
パスに空白を含んでいる場合、含んでいない場合の両方を試してみました。
結果としては
パスに空白を含んでいる場合=NG
パスに空白を含んでいない場合=OK
phpからOS空間のパスを参照する場合、空白を含んでいると動作しないようですね。
貴重な情報ありがとうございます。

>ちなみにexec()はWindowsのpif(ショートカット)やbatなども動きそうです。
>もし、ディレクトリ名など変更できないのであればこちらで解決できるかも
>しれません。batファイルであればsafe_mode_exec_dir以外の実行ファイル
>も実行できました。
対策案、ありがとうございます。
おそらく一番妥当な対策は、外部コマンドではなくエクステンションモジュール
化するのが良いのだと思いますが、諸処の事情により断念しています。

状況が変わった際には、何かしらの情報を流させていただこうと思います。

ありがとうございます。

_________________________________________________________________
ウィルス駆除も無料の 「MSN Hotmail」  http://www.hotmail.com/ 



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