Re: PHP 5.4.33 RC1 => mod_proxy_fcgi still broken
| From: | Remi Collet | Date: | Fri, 05 Sep 2014 13:13:31 +0000 |
| Subject: | Re: PHP 5.4.33 RC1 => mod_proxy_fcgi still broken | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-77071@lists.php.net to get a copy of this message | ||
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Le 05/09/2014 14:54, Philip Hofstetter a écrit :
> Applying the patch fpm_main-script_name-v2.patch proposed on
> https://bugs.php.net/bug.php?id=65641 fixes the issue for me.
This patch doesn't check for tflag, which seems usefull...
Another try attached.
Remi.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
iEYEARECAAYFAlQJtvsACgkQYUppBSnxahgSgACg4XwYbfGiw1Dygg1NboYwG3v8
lyEAnRV+ahyqt5RwyrT8sUXdoZ6KeS5h
=teMn
-----END PGP SIGNATURE-----
--- /work/php/php-5.6.0/sapi/fpm/fpm/fpm_main.c 2014-08-27 15:31:35.000000000 +0200 +++ ../sapi/fpm/fpm/fpm_main.c 2014-09-05 15:10:06.117825254 +0200 @@ -1237,6 +1237,20 @@ SG(request_info).request_uri = orig_script_name; } path_info[0] = old; + } else if (apache_was_here && env_script_name) { + /* No PATH_INFO in request, but can extract it in PATH_TRANSLATED + * so 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)) { + char old; + + _sapi_cgibin_putenv("ORIG_SCRIPT_NAME", orig_script_name TSRMLS_CC); + old = env_script_name[snlen-slen]; + env_script_name[snlen-slen] = 0; + _sapi_cgibin_putenv("SCRIPT_NAME", env_script_name TSRMLS_CC); + env_script_name[snlen-slen] = old; + } } env_path_info = _sapi_cgibin_putenv("PATH_INFO", path_info TSRMLS_CC); }
--- /work/php/php-5.6.0/sapi/fpm/fpm/fpm_main.c 2014-08-27 15:31:35.000000000 +0200 +++ ../sapi/fpm/fpm/fpm_main.c 2014-09-05 15:10:06.117825254 +0200 @@ -1237,6 +1237,20 @@ SG(request_info).request_uri = orig_script_name; } path_info[0] = old; + } else if (apache_was_here && env_script_name) { + /* No PATH_INFO in request, but can extract it in PATH_TRANSLATED + * so 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)) { + char old; + + _sapi_cgibin_putenv("ORIG_SCRIPT_NAME", orig_script_name TSRMLS_CC); + old = env_script_name[snlen-slen]; + env_script_name[snlen-slen] = 0; + _sapi_cgibin_putenv("SCRIPT_NAME", env_script_name TSRMLS_CC); + env_script_name[snlen-slen] = old; + } } env_path_info = _sapi_cgibin_putenv("PATH_INFO", path_info TSRMLS_CC); }