From 762ec2ebe80654582c9a5f1114691cd6d673d513 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Elan=20Ruusam=C3=A4e?= Date: Wed, 25 Feb 2015 01:43:42 +0200 Subject: [PATCH] make get_cfg_var("cfg_file_path") and php_ini_loaded_file() report main php.ini see https://github.com/sensiolabs/SensioDistributionBundle/pull/176#issuecomment-75266039 --- php-sapi-ini-file.patch | 62 +++++++++++++++++++++++++++++------------ 1 file changed, 44 insertions(+), 18 deletions(-) diff --git a/php-sapi-ini-file.patch b/php-sapi-ini-file.patch index 7dab0cc..d42f15b 100644 --- a/php-sapi-ini-file.patch +++ b/php-sapi-ini-file.patch @@ -1,6 +1,6 @@ ---- php-5.4.0RC3/main/php_ini.c~ 2011-12-10 03:35:27.000000000 +0200 -+++ php-5.4.0RC3/main/php_ini.c 2011-12-10 03:36:08.930154336 +0200 -@@ -358,6 +358,11 @@ +--- php-5.5.21/main/php_ini.c 2015-01-21 12:23:27.000000000 +0200 ++++ php-5.5.21/main/php_ini.c 2015-02-25 01:40:21.335354971 +0200 +@@ -378,12 +378,19 @@ } /* }}} */ @@ -12,7 +12,15 @@ /* {{{ php_init_config */ int php_init_config(TSRMLS_D) -@@ -480,6 +485,24 @@ + { + char *php_ini_file_name = NULL; + char *php_ini_search_path = NULL; ++ // value for php_ini_loaded_file() to be stored into php_ini_opened_path ++ char *php_ini_loaded_file = NULL; + int php_ini_scanned_path_len; + char *open_basedir; + int free_ini_search_path = 0; +@@ -561,8 +568,29 @@ } } } @@ -21,38 +29,57 @@ + fh.handle.fp = php_fopen_with_path("php.ini", "r", php_ini_search_path, &php_ini_opened_path TSRMLS_CC); + if (fh.handle.fp) { + fh.filename = php_ini_opened_path; -+ //PG(safe_mode) = safe_mode_state; ++ ++ // parse the ini file now + PG(open_basedir) = open_basedir; + fh.type = ZEND_HANDLE_FP; + zend_parse_ini_file(&fh, 1, ZEND_INI_SCANNER_NORMAL, (zend_ini_parser_cb_t) php_ini_parser_cb, &configuration_hash TSRMLS_CC); -+ //safe_mode_state = PG(safe_mode); + open_basedir = PG(open_basedir); -+ //PG(safe_mode) = 0; + PG(open_basedir) = NULL; + fh.handle.fp = NULL; + +- /* Otherwise search for php-%sapi-module-name%.ini file in search path */ ++ // save this for later ++ php_ini_loaded_file = estrdup(php_ini_opened_path); ++ + efree(php_ini_opened_path); + fh.filename = php_ini_opened_path = NULL; + } + } - - /* Otherwise search for php-%sapi-module-name%.ini file in search path */ ++ ++ /* Also search for php-%sapi-module-name%.ini file in search path */ if (!fh.handle.fp) { -@@ -492,14 +515,6 @@ + const char *fmt = "php-%s.ini"; + char *ini_fname; +@@ -572,13 +600,10 @@ + if (fh.handle.fp) { fh.filename = php_ini_opened_path; } - } -- +- } + - /* If still no ini file found, search for php.ini file in search path */ - if (!fh.handle.fp) { - fh.handle.fp = php_fopen_with_path("php.ini", "r", php_ini_search_path, &php_ini_opened_path TSRMLS_CC); - if (fh.handle.fp) { - fh.filename = php_ini_opened_path; -- } -- } ++ // restore previous value, so php_ini_loaded_file() works as expected ++ if (php_ini_loaded_file) { ++ php_ini_opened_path = php_ini_loaded_file; + } + } } +@@ -597,6 +622,10 @@ + + { + zval tmp; ++ // use main php.ini if loaded ++ if (php_ini_loaded_file) { ++ fh.filename = php_ini_loaded_file; ++ } - if (free_ini_search_path) { -@@ -645,13 +645,15 @@ int php_init_config(TSRMLS_D) + Z_STRLEN(tmp) = strlen(fh.filename); + Z_STRVAL(tmp) = zend_strndup(fh.filename, Z_STRLEN(tmp)); +@@ -630,13 +659,15 @@ zend_llist scanned_ini_list; zend_llist_element *element; int l, total_l = 0; @@ -69,7 +96,7 @@ for (debpath = bufpath ; debpath ; debpath=endpath) { endpath = strchr(debpath, DEFAULT_DIR_SEPARATOR); if (endpath) { -@@ -664,7 +666,7 @@ int php_init_config(TSRMLS_D) +@@ -649,7 +680,7 @@ } lenpath = strlen(debpath); @@ -78,4 +105,3 @@ for (i = 0; i < ndir; i++) { - -- 2.44.0