X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=php-sapi-ini-file.patch;h=9579ef88fa999868a763d713999c8ac3c82844f6;hb=f4ee12ea3d15ec70f1f958f0cdfbf66877fc7800;hp=dc2b1e13660de9120d31ff28e6ef0f7879713989;hpb=02d2dcbb6cfd17ce679c1680099d98d111b7d950;p=packages%2Fphp.git diff --git a/php-sapi-ini-file.patch b/php-sapi-ini-file.patch index dc2b1e1..9579ef8 100644 --- a/php-sapi-ini-file.patch +++ b/php-sapi-ini-file.patch @@ -1,6 +1,6 @@ ---- php-5.3.0/main/php_ini.c 2009-07-06 17:36:45.529879052 +0200 -+++ php-5.3.2/main/php_ini.c 2010-03-17 17:55:16.800313459 +0200 -@@ -358,6 +358,11 @@ +--- php-7.0/main/php_ini.c~ 2015-05-21 22:56:59.000000000 +0300 ++++ php-7.0/main/php_ini.c 2015-05-21 23:01:21.580419532 +0300 +@@ -379,12 +379,19 @@ } /* }}} */ @@ -11,8 +11,16 @@ + /* {{{ php_init_config */ - int php_init_config(TSRMLS_D) -@@ -480,6 +485,24 @@ + int php_init_config(void) + { + 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,59 +29,83 @@ + 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 @@ - fh.filename = php_ini_opened_path; + const char *fmt = "php-%s.ini"; + char *ini_fname; +@@ -594,15 +601,12 @@ + if (fh.handle.fp) { + fh.filename = opened_path->val; } - } -- +- } + - /* 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); +- fh.handle.fp = php_fopen_with_path("php.ini", "r", php_ini_search_path, &opened_path); - if (fh.handle.fp) { -- fh.filename = php_ini_opened_path; +- fh.filename = opened_path->val; - } - } ++ // restore previous value, so php_ini_loaded_file() works as expected ++ if (php_ini_loaded_file) { ++ php_ini_opened_path = php_ini_loaded_file; ++ } ++ } } if (free_ini_search_path) { -@@ -610,12 +625,14 @@ +@@ -597,6 +622,10 @@ + + { + zval tmp; ++ // use main php.ini if loaded ++ if (php_ini_loaded_file) { ++ fh.filename = php_ini_loaded_file; ++ } + + 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; + const char *fmt = "%s:" PHP_CONFIG_FILE_PATH "/%s.d"; + char *bufpath, *debpath, *endpath; + int lenpath; - /* List of found ini files */ zend_llist_init(&scanned_ini_list, sizeof(char *), (llist_dtor_func_t) free_estring, 1); - - /* Split by paths_separator and load ini-files from all paths */ -- path_copy = estrdup(php_ini_scanned_path); -+ path_copy = emalloc(strlen(php_ini_scanned_path) + strlen(fmt) + strlen(sapi_module.name)); -+ sprintf(path_copy, fmt, php_ini_scanned_path, sapi_module.name); - ini_path = php_strtok_r(path_copy, paths_separator, &last); + memset(&fh2, 0, sizeof(fh2)); - while (ini_path != NULL) { -@@ -636,7 +653,7 @@ - struct dirent **namelist; - int ini_path_len = strlen(ini_path); +- bufpath = estrdup(php_ini_scanned_path); ++ bufpath = emalloc(strlen(php_ini_scanned_path) + strlen(fmt) + strlen(sapi_module.name)); ++ sprintf(bufpath, fmt, php_ini_scanned_path, sapi_module.name); + for (debpath = bufpath ; debpath ; debpath=endpath) { + endpath = strchr(debpath, DEFAULT_DIR_SEPARATOR); + if (endpath) { +@@ -649,7 +680,7 @@ + } + lenpath = strlen(debpath); -- if ((ndir = php_scandir(ini_path, &namelist, 0, php_alphasort)) > 0) { -+ if ((ndir = php_scandir(ini_path, &namelist, 0, php_csort)) > 0) { - memset(&fh2, 0, sizeof(fh2)); +- if (lenpath > 0 && (ndir = php_scandir(debpath, &namelist, 0, php_alphasort)) > 0) { ++ if (lenpath > 0 && (ndir = php_scandir(debpath, &namelist, 0, php_csort)) > 0) { for (i = 0; i < ndir; i++) { +