[PHP-users 17428]Re: execが動作しない。

Tatsuya Ueda tatsuya @ ps.sakura.ne.jp
2003年 8月 21日 (木) 15:50:48 JST


S-Lines Network Service の 上田 です。

「Osamu Shigematsu <m5issige @ mr.hitachi-medical.co.jp>」 さんの
「[PHP-users 17425] Re: execが動作しない。」 への返信です。

> ソースを斜め読みしたところ、safe mode とそうでない場合の違いは基本的に、
> exec.c の php_exec のなかの、133 行目の safe mode 判定で決まるようで、
> この場合、shell に与えたものを再構成しているようです。
> 
> で、PHP 風に書き直すと
> if (セーフモード?) {
> 	// セーフモード動作
> 	if (引数に 0x20 の空白文字がある?) {
> 		最初の一文字を \0 (0x00) に置き換える
> 	}
> 	if (引数に .. (ピリオド二つ) がある?) {
> 		エラーにする;
> 	}
> 	$新しいコマンド = '';
> 	if (セーフモードの実行ディレクトリのケツがディレクトリ区切り文字で終
> わってる?) {
> 		$新しいコマンド = $引数;
> 	}
> 	else {
> 		$新しいコマンド = $ディレクトリ区切り文字 . $引数;
> 	}
> 	// 以降略
> 
> ということで、思うに、セーフモードでは、safe_mode_exec_dir を
> ベースとした相対パスでのみバイナリの所在が記述できるように読めます。
> 
> というわけで、お試しください。
> で、はずしていたら、御免なさい。

ということは、
	$size = exec("./staff/htdocs/controlpanel/size",$a,$b);
のような記述でよいということでしょうか?

先ほど上のようにしてやってみましたがやはり127のステータスが帰ってくるのみでした・・



---
 TATSUYA   E-Mail : tatsuya @ ps.sakura.ne.jp
           W e b  : http://TATSUYA.info/





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