|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2007-05-20 01:27 UTC] robertn at the-nelsons dot org
Description: ------------ If the path info contains just a slash then php returns the "No input file specified." error. Reproduce code: --------------- 1) create a phpinfo.php file with "<?php print phpinfo(); ?>" 2) View the page in the browser to make sure it works. 3) Append a / to the url and view the page again. A 404 error with the "No input file specified." is returned. 4) Append a /x to the original url and view the page again. This time it works and PATH_INFO is correctly set to "/x". Expected result: ---------------- If just a "/" is specified then PATH_INFO should be "/" Actual result: -------------- 404 No input file specified PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Nov 07 21:00:01 2025 UTC |
This bug happens because tsrm_realpath() strips any trailing slashes before resolving the realpath. The fix is to change the code in sapi/cgi/cgi_main.c at line 799. From: if (script_path_translated && (real_path = tsrm_realpath(script_path_translated, NULL TSRMLS_CC)) == NULL) { to: if (script_path_translated && (script_path_translated[strlen(script_path_translated) - 1] == '/' || script_path_translated[strlen(script_path_translated) - 1] == '\\' || (real_path = tsrm_realpath(script_path_translated, NULL TSRMLS_CC)) == NULL)) { This isn't the most efficient fix but best illustrates the solution.I wanted to avoid having the URLs below attached to the bug report so I replied directly to iliaa@php.net with the information below complete with full URLs. I've created a file called tst.php with the following contents: <html> <body> <h1>$_SERVER - <?php print phpversion();?></h1> <table> <tbody> <?php foreach ($_SERVER as $name => $value) { print "<tr><td>$name</td><td>$value</td></tr>"; } ?> </tbody> </table> </body> </html> I then linked it to tst.php5 and tst.php5f. Files with extension .php5 are set up to be executed by php version 5.2.1 unmodified. This is the stock version my Hosting provider uses. I also tested an unmodified 5.2.2 and the problem also occurs. It is just easier to use the 5.2.1 then build a non working 5.2.2. Files with extension .php5f are executed by php version 5.2.2 patched as per the bug report. You can see the different results using the URLs below: [The URLs were removed.]