64 lines
2.3 KiB
Diff
64 lines
2.3 KiB
Diff
From 8cac75969e5abb2b6be5bbd489d851a4f9e50979 Mon Sep 17 00:00:00 2001
|
|
From: Remi Collet <remi@php.net>
|
|
Date: Mon, 15 Sep 2014 13:29:55 +0200
|
|
Subject: [PATCH] Fixed bug #65641 PHP-FPM incorrectly defines the SCRIPT_NAME
|
|
variable when using Apache
|
|
|
|
ProxyPass is unable to provide correct PATH_INFO
|
|
as it is not aware of file path (while SetHandler is).
|
|
|
|
As we can extract PATH_INFO from PATH_TRANSLATED,
|
|
we also need to check if present in SCRIPT_NAME
|
|
and remove it.
|
|
|
|
After applying this patch.
|
|
With mod_php
|
|
_SERVER["REQUEST_URI"] /info.php/foo/bar?q=1
|
|
_SERVER["SCRIPT_NAME"] /info.php
|
|
_SERVER["PATH_INFO"] /foor/bar
|
|
_SERVER["PHP_SELF"] /info.php/foo/bar
|
|
_SERVER["QUERY_STRING"] q=1
|
|
|
|
With mod_proxy_fcgi + SetHandler
|
|
_SERVER["REQUEST_URI"] /info.php/foo/bar?q=1
|
|
_SERVER["SCRIPT_NAME"] /info.php
|
|
_SERVER["PATH_INFO"] /foo/bar
|
|
_SERVER["PHP_SELF"] /info.php/foo/bar
|
|
_SERVER["QUERY_STRING"] q=1
|
|
|
|
With mod_proxy_fcgi + ProxyPass
|
|
_SERVER["REQUEST_URI"] /info.php/foo/bar?q=1
|
|
_SERVER["SCRIPT_NAME"] /info.php
|
|
_SERVER["PATH_INFO"] /foo/bar
|
|
_SERVER["PHP_SELF"] /info.php/foo/bar
|
|
_SERVER["QUERY_STRING"] q=1
|
|
---
|
|
sapi/fpm/fpm/fpm_main.c | 11 +++++++++++
|
|
1 file changed, 11 insertions(+)
|
|
|
|
diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c
|
|
index 56a06f9..331342c 100644
|
|
--- a/sapi/fpm/fpm/fpm_main.c
|
|
+++ b/sapi/fpm/fpm/fpm_main.c
|
|
@@ -1231,6 +1231,17 @@ static void init_request_info(TSRMLS_D)
|
|
SG(request_info).request_uri = orig_script_name;
|
|
}
|
|
path_info[0] = old;
|
|
+ } else if (apache_was_here && env_script_name) {
|
|
+ /* Using mod_proxy_fcgi and ProxyPass, apache cannot set PATH_INFO
|
|
+ * As we can extract PATH_INFO from PATH_TRANSLATED
|
|
+ * it is probably also in SCRIPT_NAME and need to be removed
|
|
+ */
|
|
+ int snlen = strlen(env_script_name);
|
|
+ if (snlen>slen && !strcmp(env_script_name+snlen-slen, path_info)) {
|
|
+ _sapi_cgibin_putenv("ORIG_SCRIPT_NAME", orig_script_name TSRMLS_CC);
|
|
+ env_script_name[snlen-slen] = 0;
|
|
+ SG(request_info).request_uri = _sapi_cgibin_putenv("SCRIPT_NAME", env_script_name TSRMLS_CC);
|
|
+ }
|
|
}
|
|
env_path_info = _sapi_cgibin_putenv("PATH_INFO", path_info TSRMLS_CC);
|
|
}
|
|
--
|
|
1.9.2
|
|
|