#21261 [Com]: $_SERVER['PHP_SELF'] gives wrong info
| From: | tapken at engter dot de | Date: | Thu, 09 Jan 2003 20:57:06 +0000 |
| Subject: | #21261 [Com]: $_SERVER['PHP_SELF'] gives wrong info | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-29608@lists.php.net to get a copy of this message | ||
ID: 21261
Comment by: tapken@engter.de
Reported By: undream@yifan.net
Status: Open
Bug Type: Scripting Engine problem
Operating System: linux 2.4.18 - slack 8.1
PHP Version: 4.3.0
Assigned To: shane
New Comment:
Quick & Dirty PHP-Based workaround:
Put this code in a file and add it to auto_prepend_file-directive in
php.ini:
-snip----------------------------------------
// Small Workaround for a bug in PHP 4.3.0/cgi
// See http://bugs.php.net/bug.php?id=21261 for
details
$_SERVER['SCRIPT_NAME'] = substr($_SERVER['PATH_TRANSLATED'],
strlen($_SERVER['DOCUMENT_ROOT']));
$PHP_SELF =
$SCRIPT_NAME =
$_SERVER['PHP_SELF'] =
$_SERVER['SCRIPT_NAME'];
-snip------------------------------------
Works fine for me... If PHP is used as CLI it may be neccessary to
check current mode before running this code.
Previous Comments:
------------------------------------------------------------------------
[2003-01-07 13:30:23] tapken@engter.de
There is no space in SCRIPT_NAME on my localhost, this was an
copy&paste-error. But the "I" at the end exists.
------------------------------------------------------------------------
[2003-01-07 13:27:55] tapken@engter.de
Same for me, your patch seems to have no affect.
I checked the debugging output from cgiwrap which says:
[...]
Fixing Environment Variables.
Environment Variables:
QUERY_STRING: ''
SCRIPT_NAME: '/phpinfo.php'
SCRIPT_FILENAME: '<DOCUMENT_ROOT>/phpinfo.php'
REDIRECT_URL: '<NULL>'
PATH_INFO: '/phpinfo.php'
PATH_TRANSLATED: '<DOCUMENT_ROOT>/phpinfo.php'
REMOTE_USER: '<NULL>'
REMOTE_HOST: '<NULL>'
REMOTE_ADDR: '217.4.137.70'
[...]
Seems to be ok?! But PHP_SELF has no value.
On my localhost PHP 4.3/CGI works with cgiwrap. The same paragraph with
this machine:
[...]
Fixing Environment Variables.
Environment Variables:
QUERY_STRING: ''
SCRIPT_NAME: '/php/ phpinfo.phpI'
SCRIPT_FILENAME: '<DOCUMENT_ROOT>/php/phpinfo.php'
REDIRECT_URL: ''
PATH_INFO: '/php/phpinfo.php'
PATH_TRANSLATED: '<DOCUMENT_ROOT>/php/phpinfo.php'
REMOTE_USER: ''
REMOTE_HOST: ''
REMOTE_ADDR: '192.168.23.2'
[...]
In this case, script_name is broken for some reason (don't ask me why,
i didn't find out). But PHP_SELF has the correct value! On both server
SCRIPT_NAME isn't listed in the phpinfo()-Output.
Hope this will help.
------------------------------------------------------------------------
[2003-01-07 00:42:23] shane@php.net
undream@yifan.net: email me your httpd.conf, php.ini and the test
script you use. You can remove anything from the files that are
private. Also, as per spec PATH_TRANSLATED will be empty unless you
have PATH_INFO, which is path data *after* the script in a url:
http://host/script.php/path/info?query-string
The only thing I'm concerned about is the garbled PHP_SELF. PHP_SELF
is the same as SCRIPT_NAME, is SCRIPT_NAME also garbled?
------------------------------------------------------------------------
[2003-01-06 11:06:47] undream@yifan.net
Negative. Patch not only did not work (I applied it to
current 4.3.0) but I now no longer have a
$_SERVER['PATH_TRANSLATED'] variable .
So $_SERVER['PHP_SELF'] remains corrupted and
$_SERVER['PATH_TRANSLATED'] gives some kind of udefined
error.
Joshua
------------------------------------------------------------------------
[2003-01-05 21:58:19] shane@php.net
The patch at
http://www.caraveo.com/php/cgi.patch
Should fix this problem. Please try this and let me know. It's
against cvs HEAD from today.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/21261
--
Edit this bug report at http://bugs.php.net/?id=21261&edit=1