summaryrefslogtreecommitdiff
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
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.
-rw-r--r--fcgiwrap.814
-rw-r--r--fcgiwrap.c6
2 files changed, 16 insertions, 4 deletions
diff --git a/fcgiwrap.8 b/fcgiwrap.8
index 38e5a5e..0383b19 100644
--- a/fcgiwrap.8
+++ b/fcgiwrap.8
@@ -1,5 +1,5 @@
.\" Hey, EMACS: -*- nroff -*-
-.TH FCGIWRAP 8 "May 25, 2010"
+.TH FCGIWRAP 8 "Jun 2, 2010"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@@ -33,8 +33,12 @@ Show a help message and exit.
.SH ENVIRONMENT
When running, \fBfcgiwrap\fP evaluates these environment variables set by
-the web server calling a fcgi-scipt. These variables will be concatenated
-and the resulting executable run as CGI script wrapped as FastCGI.
+the web server calling an fcgi-script. The variables DOCUMENT_ROOT and
+SCRIPT_NAME will be concatenated and the resulting executable run as CGI
+script wrapped as FastCGI, with the remainder after the script name
+available as PATH_INFO. To disable PATH_INFO mangling, set up your web
+server to pass SCRIPT_FILENAME, which should contain the complete path to
+the script. Then PATH_INFO will not be modified.
DOCUMENT_ROOT
.RS
@@ -43,6 +47,10 @@ directory which the script resides in
SCRIPT_NAME
.RS
actual executable
+.RE
+SCRIPT_FILENAME
+.RS
+complete path to CGI script. When set, overrides DOCUMENT_ROOT and SCRIPT_NAME
.SH EXAMPLE
Most probably you will want to launch \fBfcgiwrap\fP by
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)