summaryrefslogtreecommitdiff
path: root/sapi
diff options
context:
space:
mode:
authorwbender <wbender@nmi.com>2020-01-03 09:29:12 -0600
committerNikita Popov <nikita.ppv@gmail.com>2020-01-24 15:33:55 +0100
commit98bfad738ad2734dfba5733323f7ba733daf3ec3 (patch)
tree74e39a58e615ca923c6d462234dc96cfd42f9778 /sapi
parent9b9436d9b0b4bd72b2997462ce74f442e3b736c1 (diff)
downloadphp-git-98bfad738ad2734dfba5733323f7ba733daf3ec3.tar.gz
Fix bug #64865: Use CONTEXT_DOCUMENT_ROOT for scanning dir tree
If CONTEXT_DOCUMENT_ROOT is set use that rather than DOCUMENT_ROOT to scan up the dir tree looking for .user.ini files. Closes GH-5051.
Diffstat (limited to 'sapi')
-rw-r--r--sapi/cgi/cgi_main.c7
-rw-r--r--sapi/fpm/fpm/fpm_main.c5
2 files changed, 9 insertions, 3 deletions
diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c
index 3bd1d2d0d4..10f92d9fd3 100644
--- a/sapi/cgi/cgi_main.c
+++ b/sapi/cgi/cgi_main.c
@@ -913,9 +913,12 @@ static int sapi_cgi_activate(void)
if (fcgi_is_fastcgi()) {
fcgi_request *request = (fcgi_request*) SG(server_context);
- doc_root = FCGI_GETENV(request, "DOCUMENT_ROOT");
+ /* Prefer CONTEXT_DOCUMENT_ROOT if set */
+ doc_root = FCGI_GETENV(request, "CONTEXT_DOCUMENT_ROOT");
+ doc_root = doc_root ? doc_root : FCGI_GETENV(request, "DOCUMENT_ROOT");
} else {
- doc_root = getenv("DOCUMENT_ROOT");
+ doc_root = getenv("CONTEXT_DOCUMENT_ROOT");
+ doc_root = doc_root ? doc_root : getenv("DOCUMENT_ROOT");
}
/* DOCUMENT_ROOT should also be defined at this stage..but better check it anyway */
if (doc_root) {
diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c
index 5a7d3cb320..d00c0c2795 100644
--- a/sapi/fpm/fpm/fpm_main.c
+++ b/sapi/fpm/fpm/fpm_main.c
@@ -733,7 +733,10 @@ static int sapi_cgi_activate(void) /* {{{ */
/* Load and activate user ini files in path starting from DOCUMENT_ROOT */
if (PG(user_ini_filename) && *PG(user_ini_filename)) {
- doc_root = FCGI_GETENV(request, "DOCUMENT_ROOT");
+ /* Prefer CONTEXT_DOCUMENT_ROOT if set */
+ doc_root = FCGI_GETENV(request, "CONTEXT_DOCUMENT_ROOT");
+ doc_root = doc_root ? doc_root : FCGI_GETENV(request, "DOCUMENT_ROOT");
+
/* DOCUMENT_ROOT should also be defined at this stage..but better check it anyway */
if (doc_root) {
doc_root_len = strlen(doc_root);