- if (script != NULL)
- *script = '\0'; /* reduce /PATH_INFO */
- /* SCRIPT_FILENAME required by PHP in CGI mode */
- if (realpath(purl + 1, realpath_buff))
- addEnv("SCRIPT", "FILENAME", realpath_buff);
- else
- *realpath_buff = 0;
- /* set SCRIPT_NAME as full path: /cgi-bin/dirs/script.cgi */
- addEnv("SCRIPT_NAME", "", purl);
- addEnv("QUERY_STRING", "", config->query);
- addEnv("SERVER", "SOFTWARE", httpdVersion);
- addEnv("SERVER", "PROTOCOL", "HTTP/1.0");
- addEnv("GATEWAY_INTERFACE", "", "CGI/1.1");
- addEnv("REMOTE", "ADDR", config->rmt_ip_str);
+ *script = '/'; /* is directory, find next '/' */
+ }
+ setenv1("PATH_INFO", script); /* set /PATH_INFO or "" */
+ /* setenv1("PATH", getenv("PATH")); redundant */
+ setenv1("REQUEST_METHOD", request);
+ if (config->query) {
+ char *uri = alloca(strlen(purl) + 2 + strlen(config->query));
+ if (uri)
+ sprintf(uri, "%s?%s", purl, config->query);
+ setenv1("REQUEST_URI", uri);
+ } else {
+ setenv1("REQUEST_URI", purl);
+ }
+ if (script != NULL)
+ *script = '\0'; /* cut off /PATH_INFO */
+ /* SCRIPT_FILENAME required by PHP in CGI mode */
+ if (!realpath(purl + 1, realpath_buff))
+ goto error_execing_cgi;
+ setenv1("SCRIPT_FILENAME", realpath_buff);
+ /* set SCRIPT_NAME as full path: /cgi-bin/dirs/script.cgi */
+ setenv1("SCRIPT_NAME", purl);
+ /* http://hoohoo.ncsa.uiuc.edu/cgi/env.html:
+ * QUERY_STRING: The information which follows the ? in the URL
+ * which referenced this script. This is the query information.
+ * It should not be decoded in any fashion. This variable
+ * should always be set when there is query information,
+ * regardless of command line decoding. */
+ /* (Older versions of bbox seemed to do some decoding) */
+ setenv1("QUERY_STRING", config->query);
+ setenv1("SERVER_SOFTWARE", httpdVersion);
+ putenv("SERVER_PROTOCOL=HTTP/1.0");
+ putenv("GATEWAY_INTERFACE=CGI/1.1");
+ setenv1("REMOTE_ADDR", config->rmt_ip_str);