From:             [EMAIL PROTECTED]
Operating system: Unix
PHP version:      4.2.3
PHP Bug Type:     Feature/Change Request
Bug description:  can't do "foo.php/path.inf" via cgi (with patch)

I use php as a cgi usuing Apache's "Action" directive.  If I put a script
in /u/joe/pub/example.php and visit http://joe/example.php/foo then Apache
puts /example.php/foo in PATH_INFO, and PHP tries to open
/u/joe/pub/example.php/foo.  (Internal server error; premature end of
script headers)

This patch checks /u, /u/joe, /u/joe/pub, etc.; if one of them is a
regular file (in this case /u/joe/pub/example.php) then that file is used
as the script filename.  Now the script runs, with the entire PATH_INFO
passed to it.  (It's up to the script to figure out which part to
ignore.)

--- main/fopen_wrappers.c.orig  Fri Aug 23 01:00:49 2002
+++ main/fopen_wrappers.c       Sun Nov  3 02:54:26 2002
@@ -388,6 +388,23 @@
                SG(request_info).path_translated = NULL;
                return FAILURE;
        }
+
+       /* check for /home/joe/public_html/example.php/pathinfo */
+       if (1) {
+               char *s;
+               for (s=filename+1; *s; s++) {
+                       if (*s == PHP_DIR_SEPARATOR && *(s-1) != PHP_DIR_SEPARATOR) {
+                               *s = 0;
+                               if (0 == stat (filename, &st)) {
+                                       if (S_ISREG(st.st_mode)) {
+                                               break;
+                                       }
+                               }
+                               *s = PHP_DIR_SEPARATOR;
+                       }
+               }
+       }
+
        fp = VCWD_FOPEN(filename, "rb");
 
        /* refuse to open anything that is not a regular file */

-- 
Edit bug report at http://bugs.php.net/?id=20226&edit=1
-- 
Try a CVS snapshot:         http://bugs.php.net/fix.php?id=20226&r=trysnapshot
Fixed in CVS:               http://bugs.php.net/fix.php?id=20226&r=fixedcvs
Fixed in release:           http://bugs.php.net/fix.php?id=20226&r=alreadyfixed
Need backtrace:             http://bugs.php.net/fix.php?id=20226&r=needtrace
Try newer version:          http://bugs.php.net/fix.php?id=20226&r=oldversion
Not developer issue:        http://bugs.php.net/fix.php?id=20226&r=support
Expected behavior:          http://bugs.php.net/fix.php?id=20226&r=notwrong
Not enough info:            http://bugs.php.net/fix.php?id=20226&r=notenoughinfo
Submitted twice:            http://bugs.php.net/fix.php?id=20226&r=submittedtwice
register_globals:           http://bugs.php.net/fix.php?id=20226&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=20226&r=php3
Daylight Savings:           http://bugs.php.net/fix.php?id=20226&r=dst
IIS Stability:              http://bugs.php.net/fix.php?id=20226&r=isapi

Reply via email to