ID:               41446
 Updated by:       [EMAIL PROTECTED]
 Reported By:      robertn at the-nelsons dot org
-Status:           Assigned
+Status:           Feedback
 Bug Type:         CGI related
 Operating System: Linux
 PHP Version:      5.2.2
 Assigned To:      iliaa
 New Comment:

Please try using this CVS snapshot:

  http://snaps.php.net/php5.2-latest.tar.gz
 
For Windows (zip):
 
  http://snaps.php.net/win32/php5.2-win32-latest.zip

For Windows (installer):

  http://snaps.php.net/win32/php5.2-win32-installer-latest.msi




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

[2007-05-22 08:30:00] robertn at the-nelsons dot org

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.]

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

[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.

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

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/41446

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

Reply via email to