summaryrefslogtreecommitdiff
path: root/fcgiwrap.c
diff options
context:
space:
mode:
authorGrzegorz Nosek <root@localdomain.pl>2010-06-03 14:36:36 +0200
committerGrzegorz Nosek <root@localdomain.pl>2010-06-03 16:17:41 +0200
commit0bcd1284ed9bcccc71953db79943977672e0ea93 (patch)
treee6bd7b2d8a0cd3f8dffe1a042ed0e72392d36ad6 /fcgiwrap.c
parent944dab43611f644c9b1588d6b8c89ac8e1298f89 (diff)
downloadfcgiwrap-0bcd1284ed9bcccc71953db79943977672e0ea93.tar.xz
fcgiwrap-0bcd1284ed9bcccc71953db79943977672e0ea93.zip
Use SCRIPT_FILENAME environment variable when available
If present, it overrides DOCUMENT_ROOT and SCRIPT_NAME and prevents mangling of PATH_INFO. Should allow cleaner configs when script names don't come from request URIs directly.
Diffstat (limited to 'fcgiwrap.c')
-rw-r--r--fcgiwrap.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/fcgiwrap.c b/fcgiwrap.c
index 2df84bb..d62e37f 100644
--- a/fcgiwrap.c
+++ b/fcgiwrap.c
@@ -368,6 +368,10 @@ char *get_cgi_filename() /* and fixup environment */
int rf_len;
char *pathinfo = NULL;
+ if ((p = getenv("SCRIPT_FILENAME"))) {
+ return strdup(p);
+ }
+
if ((p = getenv("DOCUMENT_ROOT"))) {
docroot = p;
docrootlen = strlen(p);
@@ -495,7 +499,7 @@ static void handle_fcgi_request()
filename = get_cgi_filename();
inherit_environment();
if (!filename)
- error_403("Cannot get script name, are DOCUMENT_ROOT and SCRIPT_NAME set and is the script executable?", NULL);
+ error_403("Cannot get script name, are DOCUMENT_ROOT and SCRIPT_NAME (or SCRIPT_FILENAME) set and is the script executable?", NULL);
last_slash = strrchr(filename, '/');
if (!last_slash)