Commit:    4a92ae34011ad2246500f27469f378b66d832976
Author:    Remi Collet <r...@php.net>         Tue, 30 Apr 2013 08:55:18 +0200
Parents:   4e773c1b92c5db328fbbca36e566a1c76957be63
Branches:  PHP-5.4 PHP-5.5 master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=4a92ae34011ad2246500f27469f378b66d832976

Log:
When Apache use RewriteRule to redirect, via mod_proxy_fgi, to php-fpm
the SCRIPT_FILENAME may contains the QUERY_STRING.

Ex : RewriteRule ^(.*)\.php$ fcgi://127.0.0.1:9000/$1.php [P]

From apache debug (build with -DFCGI_DUMP_ENV_VARS)
AH01062: sending env var 'SCRIPT_FILENAME' value 
'proxy:fcgi://127.0.0.1:9000/var/www/html/info.php?foo'
AH01071: Got error 'Primary script unknown\n'

Changed paths:
  M  NEWS
  M  sapi/fpm/fpm/fpm_main.c


Diff:
diff --git a/NEWS b/NEWS
index 2527cfc..3a9199b 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,9 @@ PHP                                                             
           NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? ??? 2013, PHP 5.4.16
 
+- FPM:
+  . Ignore QUERY_STRING when sent in SCRIPT_FILENAME. (Remi)
+
 ?? ??? 2013, PHP 5.4.15
 - Core:
   . Fixed bug #64578 (debug_backtrace in set_error_handler corrupts zend heap: 
diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c
index 61088c4..28ed0be 100644
--- a/sapi/fpm/fpm/fpm_main.c
+++ b/sapi/fpm/fpm/fpm_main.c
@@ -1098,7 +1098,7 @@ static void init_request_info(TSRMLS_D)
 
 #define APACHE_PROXY_FCGI_PREFIX "proxy:fcgi://"
                /* Fix proxy URLs in SCRIPT_FILENAME generated by Apache 
mod_proxy_fcgi:
-                *     proxy:fcgi://localhost:9000/some-dir/info.php/test
+                *     
proxy:fcgi://localhost:9000/some-dir/info.php/test?foo=bar
                 * should be changed to:
                 *     /some-dir/info.php/test
                 * See: http://bugs.php.net/bug.php?id=54152
@@ -1118,6 +1118,11 @@ static void init_request_info(TSRMLS_D)
                                memmove(env_script_filename, p, strlen(p) + 1);
                                apache_was_here = 1;
                        }
+                       /* ignore query string if sent by Apache (RewriteRule) 
*/
+                       p = strchr(env_script_filename, '?');
+                       if (p) {
+                               *p =0;
+                       }
                }
 
                if (CGIG(fix_pathinfo)) {


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to