in modules/fcgid/mod_fcgid.c [141:180]
static void fcgid_add_cgi_vars(request_rec * r)
{
apr_array_header_t *passheaders = get_pass_headers(r);
if (passheaders != NULL) {
const char **hdr = (const char **) passheaders->elts;
int hdrcnt = passheaders->nelts;
int i;
for (i = 0; i < hdrcnt; i++, ++hdr) {
const char *val = apr_table_get(r->headers_in, *hdr);
if (val) {
/* no munging of header name to create envvar name;
* consistent with legacy mod_fcgid behavior and mod_fastcgi
* prior to 2.4.7
*/
apr_table_setn(r->subprocess_env, *hdr, val);
/* standard munging of header name (upcase, HTTP_, etc.) */
apr_table_setn(r->subprocess_env, http2env(r->pool, *hdr), val);
}
}
}
/* Work around cgi.fix_pathinfo = 1 in php.ini */
if (g_php_fix_pathinfo_enable) {
char *merge_path;
apr_table_t *e = r->subprocess_env;
/* "DOCUMENT_ROOT"/"SCRIPT_NAME" -> "SCRIPT_NAME" */
const char *doc_root = apr_table_get(e, "DOCUMENT_ROOT");
const char *script_name = apr_table_get(e, "SCRIPT_NAME");
if (doc_root && script_name
&& apr_filepath_merge(&merge_path, doc_root, script_name, 0,
r->pool) == APR_SUCCESS) {
apr_table_setn(e, "SCRIPT_NAME", merge_path);
}
}
}