com php-src: When Apache use RewriteRule to redirect, via mod_proxy_fgi, to php-fpm the SCRIPT_FILENAME may contains the QUERY_STRING.: NEWS sapi/fp
m/fpm/fpm_main.c
| From: | Remi Collet | Date: | Tue, 30 Apr 2013 06:55:18 +0000 |
| Subject: | com php-src: When Apache use RewriteRule to redirect, via mod_proxy_fgi, to php-fpm the SCRIPT_FILENAME may contains the QUERY_STRING.: NEWS sapi/fp m/fpm/fpm_main.c |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-72068@lists.php.net to get a copy of this message | ||
Commit: 4a92ae34011ad2246500f27469f378b66d832976
Author: Remi Collet <remi@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)) {