« 書評:流通戦略の新発想 / 伊藤元重Google携帯版リニューアル »

PHPのセーフモード手強い・・・・

パーマリンク 2007/12/14 01:40:14 著者: あつ メール
カテゴリ: PHP

今日は朝からPHPのセーフモードくんと戦っておりました。
何がやりたかったかというと、セーフモード有効の環境下で、system関数やexec関数を使いたかったんです。

マニュアルには safe_mode_exec_dir を設定すればOKって書いてあるから、やってみたらうまくいかない・・・・。
どうにもならないので、PHPの元ソースをちょっとだけ見ることに。
/ext/standard/exec.c

  if (PG(safe_mode)) {
    if ((c = strchr(cmd, ' '))) {
      *c = '\0';
      c++;
    }
    if (strstr(cmd, "..")) {
      php_error_docref(NULL TSRMLS_CC, E_WARNING, "No '..' components allowed in path");
      goto err;
    }
    b = strrchr(cmd, PHP_DIR_SEPARATOR);
    spprintf(&d, 0, "%s%s%s%s%s", PG(safe_mode_exec_dir), (b ? "" : "/"), (b ? b : cmd), (c ? " " : ""), (c ? c : ""));
    if (c) {
      *(c - 1) = ' ';
    }
    cmd_p = php_escape_shell_cmd(d);
    efree(d);
    d = cmd_p;
  } else {
    cmd_p = cmd;
  }

なんとなく、safe_mode_exec_dir の後ろにくっつけている感じ。

!?

safe_mode_exec_dir に複数設定しちゃダメなのかもってことで、一つだけにしたら無事動きました。
マニュアルに複数できるなんて書いてなかったです・・・・・。

ここまでは順調?にいったのですが、ここからが大変でした。
system関数で呼び出した側のファイル内の処理がうまく動かない。
単純な echo くらいは OK だったのですが、ちょっと付け加えるともう動かない。
セーフモード手強すぎ。。。。

時間かかり過ぎなので、別案にて現在進行中。
落ち着いてからもう一回挑戦かな。

この記事へのトラックバック アドレス

トラックバックURL(右クリックでURLのコピーをしてください)

フィードバックはまだありません...

コメントを残す


頂いたメールアドレスはこのサイト上には表示されません

頂いたURLは表示されます。
(改行が自動で <br /> になります)
(Name, email & website)
(ユーザに、メッセージ・フォームを通じた連絡を許可します (あなたのメール・アドレスは表示されません))

あつ

Facebookやってます

愛知県名古屋市在住のWEBシステム屋(SE・プログラマ)。株式会社一六社(いちろくしゃ)所属。PHP、 CakePHPを利用して日々開発中。WEBで地域活性化を目指します。好き:フットサル/GTD/Mac/ 住んだことのある場所:一宮(愛知)、豊田(愛知)、浜松(静岡)、浦添(沖縄)、中津川(岐阜)、名古屋(愛知)

検索

タグクラウド

勉強会

欲しい物リストの全て

レコメンデーションエンジン

16ブログ     powered by b2evolution free blog software