PHP 4.0 Bug #5181 Updated: 'No input file specified' error in CGI mode / location of bugs in code

From: Date: Fri, 12 Jan 2001 16:18:40 +0000
Subject: PHP 4.0 Bug #5181 Updated: 'No input file specified' error in CGI mode / location of bugs in code
Groups: php.dev 
Request: Send a blank email to php-dev+get-43879@lists.php.net to get a copy of this message
ID: 5181 Updated by: sniper Reported By: pdoyle@cncx.com Old-Status: Suspended Status: Closed Old-Bug Type: Installation problem Bug Type: *General Issues Assigned To: Comments: This should be fixed now. Please try PHP 4.0.4pl1. --Jani Previous Comments: --------------------------------------------------------------------------- [2000-08-02 12:13:24] hholzgra@php.net please wait, none of the suggested changes seem to be applied ... lets just suspend it for now --------------------------------------------------------------------------- [2000-08-01 22:59:35] waldschrott@php.net no feedback, closed --------------------------------------------------------------------------- [2000-06-28 05:06:55] stas@cvs.php.net Please chekc the latest version - does it work now? --------------------------------------------------------------------------- [2000-06-21 23:09:29] pdoyle@cncx.com As others have reported, setting --enable-discard-path does not allow PHP to run properly in CGI mode. This simple script will fail when hit through a Web server: #!/usr/local/bin/php <?php echo "Hello, world."; ?> producing a "No input file specified" error. There seem to be three bugs in the file sapi/cgi/cgi_main.c that cause this. (At least, when I fixed these things, it worked). I'll now reveal what is probably my ignorance of the code by pointing them out. The problems are all in the init_request_info() function. Specifically, 1. ~Line 252. script_filename is set to getenv("SCRIPT_FILENAME") rather than getenv("SCRIPT_NAME"). Maybe SCRIPT_FILENAME is a newer variant I haven't heard of, but our servers have always used SCRIPT_NAME. 2. ~Line 278. If DISCARD_PATH is set and script_filename is available, SG(request_info).path_translated should be set to the concatenation of getenv("DOCUMENT_ROOT") and script_filename, not just script_filename. Otherwise, when php_fopen_primary_script() tries to open it it will bomb, because it doesn't have the full path. 3. ~Line 290. For some reason, irrespective of the previous DISCARD_PATH section, SG(request_info).path_translated is set to NULL. This will clobber the script name when discard path is enabled. As far as I can tell this line should simply be removed. Hope that's useful to someone. :) --------------------------------------------------------------------------- Full Bug description available at: http://bugs.php.net/?id=5181

« previous php.dev (#43879) next »