summaryrefslogtreecommitdiff
path: root/sapi
diff options
context:
space:
mode:
authorfoobar <sniper@php.net>2005-02-04 10:39:33 +0000
committerfoobar <sniper@php.net>2005-02-04 10:39:33 +0000
commit951eb23e9a7b2ed26a72799ffba58aed62d4e949 (patch)
treecd903782074fd5e2bffa3c5b3f3588ef8f997d9d /sapi
parent1a962e9d98b8b2285812c68dc87e7370d2ebc2a3 (diff)
downloadphp-git-951eb23e9a7b2ed26a72799ffba58aed62d4e949.tar.gz
- Fixed bug #28227 (PHP CGI depends upon non-standard SCRIPT_FILENAME)
# patch by: lukem at NetBSD dot org
Diffstat (limited to 'sapi')
-rw-r--r--sapi/cgi/cgi_main.c12
1 files changed, 11 insertions, 1 deletions
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);