summaryrefslogtreecommitdiffhomepage
path: root/networking
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2005-09-01 09:38:32 +0000
committerRob Landley <rob@landley.net>2005-09-01 09:38:32 +0000
commit344ea471ef63d54436f296c140e7f86c67237545 (patch)
treed37862b158a16824edc9e580ee9f0ed8eb58342d /networking
parentf815469a767d0e5e53970136e0f7279f8d4140cf (diff)
Tracking system but #4: php needs the environment variable SCRIPT_FILENAME.
Diffstat (limited to 'networking')
-rw-r--r--networking/httpd.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/networking/httpd.c b/networking/httpd.c
index e3f4027dc..191a316a1 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1146,6 +1146,11 @@ static int sendCgi(const char *url,
}
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);
@@ -1178,7 +1183,7 @@ static int sendCgi(const char *url,
/* set execve argp[0] without path */
argp[0] = strrchr( purl, '/' ) + 1;
/* but script argp[0] must have absolute path and chdiring to this */
- if(realpath(purl + 1, realpath_buff) != NULL) {
+ if(*realpath_buff) {
script = strrchr(realpath_buff, '/');
if(script) {
*script = '\0';