ID: 48695 Updated by: srina...@php.net Reported By: allerlei+bugs dot php dot net at sihw dot nl -Status: Analyzed +Status: Bogus Bug Type: CGI related Operating System: Centos 4/5 PHP Version: 5.2.10 Assigned To: srinatar New Comment:
Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php After discussing this issue with the bug submitter , moving this issue to bogus (not an issue). here, the submitter was trying to use php-cgi as not an standard apache handler but with their own apache handler. however, their own standard handler was not behaving the way apache handler behaves. hencey,they run into this issue. with php 5.2.10 and above , if running under cgi/fastcgi environment , we expect PATH_TRANSLATED to provide the actual location of the script to execute while SCRIPT_FILENAME (env variable from apache) to be pointing to the location of php-cgi binary itself. This is the default behavior of apache handler and also other popular handlers like cgiwrap etc. so, if some one is writing a custom handler, they need to follow the same convention as done with default handler behavior. Previous Comments: ------------------------------------------------------------------------ [2009-07-29 07:36:09] srina...@php.net in default apache cgi/fastcgi mode, apache sets some of these cgi variables differently compared to what this bug submitter is doing in his environment. hence this bug wasn't easy to reproduce. as per the default apache cgi/fastcgi environment, apache sets SCRIPT_FILENAME - to point to the location of the handler and PATH_TRANSLATED to point to the location of the translated path of the uri (translated from the document root). however, SCRIPT_NAME can be set incorrectly (by apache cgi) in this default environment. So, php-cgi sapi code needed to fix the SCRIPT_NAME in the default environment. now, this potentially affects other web servers like iplanet web server. so, a fix for this issue went into php 5.2.9/5.2.10 (see also bug #47149/ #47042). now this fix handles scenario for apache as well as other web servers in default mode. however, here bug submitter uses apache in cgi environment along with a custom apache handler (startscript - a handler script with custom modifications based on cgiwrap which is another popular apache handler script for cgi environment in multi hosting mode). here, the bug seems to happen if some one uses custom apache handler (some thing that mimics programs like cgiwrap) and accordingly munges SCRIPT_FILENAME , PATH_TRANSLATED and other cgi variables appropriately before feeding to php-cgi process. php-cgi sapi code, with php version 5.2.9/10, expects the SCRIPT_FILENAME to point to the apache handler while PATH_TRANSLATED to point to the virtual path of the input uri. however, the custom apache handler script that the bug submitter uses in his environment - configured SCRIPT_FILENAME / PATH_TRANSLATED to point to the virtual path of the input uri (to be the actual file name of the input request uri) this behavior is different from that of default apache behavior as well as that of cgi wrappers like cgiwrap etc. hence bug submitter is seeing different behavior with 5.2.10. having said that - i couldn't find official documentation anywhere within apache web site where it says SCRIPT_FILENAME cannot point to the actual input uri, so, i can't outright reject out bug submitter's custom apache handler code as well. i am currently looking into the the best way to resolve this issue so that customers like this bug submitter can continue to work without having to make any changes into their apache handler script. ------------------------------------------------------------------------ [2009-07-20 08:20:21] allerlei+bugs dot php dot net at sihw dot nl Sorry about the delay and the work I caused. I hope this is not something I missed somewhere. The thing is, the same 'startscript' is used for both 5.2.8 and 5.2.10. This program uses the php-cgi executable to start the script (is execs into php-cgi + arguments). I used this script to generate the environment: #!/usr/bin/perl print "Content-type: text/plain\n\n"; foreach my $i (sort keys %ENV) { print "${i}: " . $ENV{$i} . "\n"; } #end This is (most of) the output: DOCUMENT_ROOT: /home/pakket/wensweb/web GATEWAY_INTERFACE: CGI/1.1 HTTP_ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 HTTP_ACCEPT_CHARSET: UTF-8,* HTTP_ACCEPT_ENCODING: gzip,deflate HTTP_ACCEPT_LANGUAGE: nl-nl,en;q=0.7,fr;q=0.3 HTTP_CONNECTION: keep-alive HTTP_HOST: www.wensweb.nl HTTP_KEEP_ALIVE: 300 HTTP_USER_AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729) PATH: /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin PATH_INFO: PATH_TRANSLATED: /home/pakket/wensweb/web/test8932.cgi QUERY_STRING: REDIRECT_HANDLER: startscript_exe REDIRECT_SCRIPT_URI: http://www.wensweb.nl/test8932.cgi REDIRECT_SCRIPT_URL: /test8932.cgi REDIRECT_STATUS: 200 REDIRECT_URL: /test8932.cgi REMOTE_ADDR: 83.161.60.47 REMOTE_PORT: 50783 REQUEST_METHOD: GET REQUEST_URI: /test8932.cgi SCRIPT_FILENAME: /home/pakket/wensweb/web/test8932.cgi SCRIPT_NAME: /spinwebstartscript/startscript/wensweb/exe/test8932.cgi SCRIPT_URI: http://www.wensweb.nl/test8932.cgi SCRIPT_URL: /test8932.cgi SERVER_ADDR: 81.26.210.110 SERVER_ADMIN: * SERVER_NAME: www.wensweb.nl SERVER_PORT: 80 SERVER_PROTOCOL: HTTP/1.1 SERVER_SIGNATURE: SERVER_SOFTWARE: Apache -- The script is now removed ofcause. Do you think these values are correct enough? If you think this is not bogus (as all stuff works ok in 5.2.8..) I can give you access if you need it. Please e-mail me privately for that. Jelmer) ------------------------------------------------------------------------ [2009-07-16 19:25:15] srina...@php.net can you kindly provide the output of PATH_TRANSLATED SCRIPT_FILENAME from a simple cgi script (not php). i would like to see the env variable before it is passed to php. to get this info, if you could kindly write a 2 line cgi script that prints this value that should suffice. I am afraid that if i don't hear any response too soon, i need to close this bug as bogus. i have tried my best reproduce it (with suEXEC as well as with cgi-wrapper) and have also checked with apache 1.3.41 as well as with apache 2.x and still unable to reproduce it. either i am missing some thing or you had some issues with your 'startscript' cgi wrapper that you resolved it on your own. ------------------------------------------------------------------------ [2009-07-14 09:43:20] srina...@php.net hi as i mentioned in my comment, some help on how to reproduce this issue would be much appreciated. ------------------------------------------------------------------------ [2009-07-11 10:20:50] sriram dot natarajan at gmail dot com i have even configured with SuEXEC and still unable to reproduce this issue. i must be missing some thing obvious. haven't figured out what it is though.. if any one has any better suggestions on what should be my apache config, i will appreciate. ------------------------------------------------------------------------ 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/48695 -- Edit this bug report at http://bugs.php.net/?id=48695&edit=1