Hi, as Chris said we're trying to get out 5.3.6 out. Once 5.3.6 is out it can be re-added for 5.3.7.
johannes On Wed, 2011-03-09 at 18:27 +0000, Jim Jagielski wrote: > jimjag Wed, 09 Mar 2011 18:27:30 +0000 > > Revision: http://svn.php.net/viewvc?view=revision&revision=309053 > > Log: > Close [PHP-BUG] Req #54152... > Apache 2.3.12 (and later) will now work correctly with PHP's fcgi > impl with this patch. > > Bug: http://bugs.php.net/54152 (Assigned) Make FPM compatible with Apache > HTTP Server 2.3 mod_proxy_fcgi > > Changed paths: > U php/php-src/branches/PHP_5_3/sapi/fpm/fpm/fpm_main.c > > Modified: php/php-src/branches/PHP_5_3/sapi/fpm/fpm/fpm_main.c > =================================================================== > --- php/php-src/branches/PHP_5_3/sapi/fpm/fpm/fpm_main.c 2011-03-09 > 16:41:07 UTC (rev 309052) > +++ php/php-src/branches/PHP_5_3/sapi/fpm/fpm/fpm_main.c 2011-03-09 > 18:27:30 UTC (rev 309053) > @@ -1085,6 +1085,7 @@ > char *env_path_translated = sapi_cgibin_getenv("PATH_TRANSLATED", > sizeof("PATH_TRANSLATED")-1 TSRMLS_CC); > char *script_path_translated = env_script_filename; > char *ini; > + int apache_was_here = 0; > > /* some broken servers do not have script_filename or argv0 > * an example, IIS configured in some ways. then they do more > @@ -1130,6 +1131,30 @@ > env_path_info = _sapi_cgibin_putenv("PATH_INFO", > env_path_info TSRMLS_CC); > } > > +#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 > + * should be changed to: > + * /some-dir/info.php/test > + * See: http://bugs.php.net/bug.php?id=54152 > + * https://issues.apache.org/bugzilla/show_bug.cgi?id=50851 > + */ > + if (env_script_filename && > + strncasecmp(env_script_filename, > APACHE_PROXY_FCGI_PREFIX, sizeof(APACHE_PROXY_FCGI_PREFIX) - 1) == 0) { > + /* advance to first character of hostname */ > + char *p = env_script_filename + > (sizeof(APACHE_PROXY_FCGI_PREFIX) - 1); > + while (*p != '\0' && *p != '/') { > + p++; /* move past hostname and port */ > + } > + if (*p != '\0') { > + /* Copy path portion in place to avoid memory > leak. Note > + * that this also affects what > script_path_translated points > + * to. */ > + memmove(env_script_filename, p, strlen(p) + 1); > + apache_was_here = 1; > + } > + } > + > if (CGIG(fix_pathinfo)) { > struct stat st; > char *real_path = NULL; > @@ -1201,11 +1226,21 @@ > * we have to play the game of > hide and seek to figure > * out what SCRIPT_NAME should > be > */ > - int slen = len - strlen(pt); > + int ptlen = strlen(pt); > + int slen = len - ptlen; > int pilen = env_path_info ? > strlen(env_path_info) : 0; > - char *path_info = env_path_info > ? env_path_info + pilen - slen : NULL; > + int tflag = 0; > + char *path_info; > + if (apache_was_here) { > + /* recall that > PATH_INFO won't exist */ > + path_info = > script_path_translated + ptlen; > + tflag = (slen != 0 && > (!orig_path_info || strcmp(orig_path_info, path_info) != 0)); > + } else { > + path_info = > env_path_info ? env_path_info + pilen - slen : NULL; > + tflag = (orig_path_info > != path_info); > + } > > - if (orig_path_info != > path_info) { > + if (tflag) { > if (orig_path_info) { > char old; > > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php