[PHP-users 13828] Re: CGI版 php でcurrent directory を取得出来ない
Nakamura Kazuto
php-users@php.gr.jp
Fri, 07 Mar 2003 15:56:01 +0900
中村です。
ずっと調査を続けています。CGI版の話なのですがよく見ると PHP の特徴
の1つである変数の自動分解がなされていない事に気づきました。パラメータ
付きで実行し、phpinfo() の結果で見ています。
_ENV["SCRIPT_FILENAME"] => /home/test/public_html/sample.cgi
_ENV["REQUEST_URI"] => /~test/sample.cgi?id=30
_ENV["SCRIPT_NAME"] => /~test/sample.cgi
_ENV["QUERY_STRING"] => id=30
_SERVER["QUERY_STRING"] => id=30
実はディレクトリ情報も正確に取得出来ています。じゃ何故 chdir 等が
動かないのか?理由がわかりません。CGI版の PHP をお使いの方はおりま
せんか…?
[環境]
'./configure' '--enable-mbstring' '--with-zlib' '--enable-ftp'
'--without-mysql' '--enable-mbregex'
'--enable-discard-path' '--enable-force-cgi-redirect'
disable_functions => no value => no value
doc_root => no value => no value
register_argc_argv => On => On
register_globals => On => On
safe_mode => Off => Off
safe_mode_exec_dir => no value => no value
user_dir => public_html => public_html
>中村です。
>php-4.3.1 CGI版の話です。
>
>httpd から呼び出しているのですが current directory が変わらないで
>困っています。下記のサンプルで実験しています。コマンドラインから
>実行すると勿論うまく行きます。
>
>--- file chdir.cgi ------------------------------------
>#!/usr/local/bin/php
><?
> echo "Content-type: text/html\n\n";
> $curdir = getcwd();
> echo "1:$curdir<BR>";
> if ( chdir("/home/kazuto/public_html/") == false) {
> echo "chdir failed"; exit;
> }
> echo "chdir success<BR>";
> $curdir = getcwd();
> echo "2:$curdir<BR>";
>?>
>--- file end ------------------------------------------
>
>嘘ディレクトリを書くとちゃんと chdir は false になります。
>$curdir はいつでも空白で値が入りません。
>
>これを正常に動かすにはどうしたらいいのでしょう?
>#ファイル取得ルーチンを全て full path に書き直せば動きますが
>#激しく面倒なのでどうにかこれを動かしたいんです。
--
中村 和人 kazuto@sainet.or.jp