ID:               41446
 User updated by:  robertn at the-nelsons dot org
 Reported By:      robertn at the-nelsons dot org
-Status:           Feedback
+Status:           Open
 Bug Type:         CGI related
 Operating System: Linux
 PHP Version:      5.2.2
 New Comment:

I wanted to avoid having the URLs below attached to the bug report so I
replied directly to [EMAIL PROTECTED] 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.]


Previous Comments:
------------------------------------------------------------------------

[2007-05-21 16:41:22] [EMAIL PROTECTED]

I've tried to reproduce the problem, but it seems to be working fine as

is. Can you show me output of $_SERVER from a working path info
request?

------------------------------------------------------------------------

[2007-05-20 22:46:06] robertn at the-nelsons dot org

Apache/2.0.54 (Unix) PHP/4.4.4 mod_ssl/2.0.54 OpenSSL/0.9.7e
mod_fastcgi/2.4.2 DAV/2 SVN/1.4.2

------------------------------------------------------------------------

[2007-05-20 16:06:10] [EMAIL PROTECTED]

What web server are you using?

------------------------------------------------------------------------

[2007-05-20 02:09:25] robertn at the-nelsons dot org

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.

------------------------------------------------------------------------

[2007-05-20 01:27:15] 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


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=41446&edit=1

Reply via email to