From: Jim Jagielski Date: Fri, 4 Mar 2011 18:31:17 +0000 (+0000) Subject: Fix/workaround for BUGZ PR 50851. X-Git-Tag: 2.3.12~284 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b6debecc34c49320db83e6b117fe72cb1bce5298;p=apache Fix/workaround for BUGZ PR 50851. By default, mod_proxy_fcgi with not create PATH_INFO, unless specifically told to. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1078089 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/docs/manual/mod/mod_proxy_fcgi.xml b/docs/manual/mod/mod_proxy_fcgi.xml index 6ddcfd7751..150c44f32b 100644 --- a/docs/manual/mod/mod_proxy_fcgi.xml +++ b/docs/manual/mod/mod_proxy_fcgi.xml @@ -96,4 +96,21 @@ +
Environment Variables +

In addition to the configuration directives that control the + behaviour of mod_proxy, there are a number of + environment variables that control the FCGI protocol + provider:

+
+
proxy-fcgi-pathinfo
+
By default mod_proxy_fcgi will neither create + nor export the PATH_INFO environment variable. This allows + the backend FCGI server to correctly determine SCRIPT_NAME + and Script-URI and be compliant with RFC 3875 section 3.3. + If instead you need mod_proxy_fcgi to generate + a "best guess" for PATH_INFO, set this env-var. + This is a workaround for a bug in some FCGI implementations.
+
+
+ diff --git a/modules/proxy/mod_proxy_fcgi.c b/modules/proxy/mod_proxy_fcgi.c index 7d1b41e2d3..6ebd6d2a85 100644 --- a/modules/proxy/mod_proxy_fcgi.c +++ b/modules/proxy/mod_proxy_fcgi.c @@ -119,10 +119,12 @@ static int proxy_fcgi_canon(request_rec *r, char *url) ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "proxy: FCGI: set r->filename to %s", r->filename); - r->path_info = apr_pstrcat(r->pool, "/", path, NULL); + if (apr_table_get(r->subprocess_env, "proxy-fcgi-pathinfo")) { + r->path_info = apr_pstrcat(r->pool, "/", path, NULL); - ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, - "proxy: FCGI: set r->path_info to %s", r->path_info); + ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, + "proxy: FCGI: set r->path_info to %s", r->path_info); + } return OK; }