From 951eb23e9a7b2ed26a72799ffba58aed62d4e949 Mon Sep 17 00:00:00 2001 From: foobar Date: Fri, 4 Feb 2005 10:39:33 +0000 Subject: [PATCH] - Fixed bug #28227 (PHP CGI depends upon non-standard SCRIPT_FILENAME) # patch by: lukem at NetBSD dot org --- sapi/cgi/cgi_main.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c index 572db4078c..1be9f63897 100644 --- a/sapi/cgi/cgi_main.c +++ b/sapi/cgi/cgi_main.c @@ -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); -- 2.50.1