]> granicus.if.org Git - php/commitdiff
- Fixed bug #28227 (PHP CGI depends upon non-standard SCRIPT_FILENAME)
authorfoobar <sniper@php.net>
Fri, 4 Feb 2005 10:39:33 +0000 (10:39 +0000)
committerfoobar <sniper@php.net>
Fri, 4 Feb 2005 10:39:33 +0000 (10:39 +0000)
# patch by: lukem at NetBSD dot org

sapi/cgi/cgi_main.c

index 572db4078c552efedd07fea469e5eb92ab5f498a..1be9f63897710243a52c60ed85fb028e029070b8 100644 (file)
@@ -662,8 +662,19 @@ static void init_request_info(TSRMLS_D)
 {
        char *env_script_filename = sapi_cgibin_getenv("SCRIPT_FILENAME",0 TSRMLS_CC);
        char *env_path_translated = sapi_cgibin_getenv("PATH_TRANSLATED",0 TSRMLS_CC);
+       char *env_script_name = sapi_cgibin_getenv("SCRIPT_NAME", 0 TSRMLS_CC);
        char *script_path_translated = env_script_filename;
 
+       /*
+        * CGI/1.1, as documented at: http://cgi-spec.golux.com/
+        * mentions SCRIPT_NAME but not SCRIPT_FILENAME.
+        */
+       if (!script_path_translated && env_script_name && *env_script_name == '/')  {
+               env_script_filename = _sapi_cgibin_putenv("SCRIPT_FILENAME",(env_script_name + 1) TSRMLS_CC);
+
+               script_path_translated = env_script_filename;
+       }
+
 #if !DISCARD_PATH
        /* some broken servers do not have script_filename or argv0
           an example, IIS configured in some ways.  then they do more
@@ -691,7 +702,6 @@ static void init_request_info(TSRMLS_D)
                char *content_length = sapi_cgibin_getenv("CONTENT_LENGTH",0 TSRMLS_CC);
                char *content_type = sapi_cgibin_getenv("CONTENT_TYPE",0 TSRMLS_CC);
                char *env_path_info = sapi_cgibin_getenv("PATH_INFO",0 TSRMLS_CC);
-               char *env_script_name = sapi_cgibin_getenv("SCRIPT_NAME",0 TSRMLS_CC);
 #if ENABLE_PATHINFO_CHECK
                struct stat st;
                char *env_redirect_url = sapi_cgibin_getenv("REDIRECT_URL",0 TSRMLS_CC);