X-Git-Url: https://git.tld-linux.org/?p=packages%2Fphp.git;a=blobdiff_plain;f=php-sapi-ini-file.patch;h=598be44f9a08d1a73d9b24c304f7c0a00bcfc791;hp=0ed4d799f2bd6d7085e67c244c3bc9817847dd29;hb=e6f83ff85ff9f0aee5fb84a941ec5978c62af03c;hpb=a7a672c356d6bab9f63f3a85bca24504114f7bc4 diff --git a/php-sapi-ini-file.patch b/php-sapi-ini-file.patch index 0ed4d79..598be44 100644 --- a/php-sapi-ini-file.patch +++ b/php-sapi-ini-file.patch @@ -1,12 +1,36 @@ -to test which is main php.ini: +The ini loading order is in PLD (as of 7.4.0beta2): +- openat(AT_FDCWD, "/etc/php74/php-cli.ini", O_RDONLY) = -1 ENOENT (No such file or directory) +- openat(AT_FDCWD, "/etc/php74/php.ini", O_RDONLY) = 4 +- openat(AT_FDCWD, "/etc/php74/conf.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = 4 +- openat(AT_FDCWD, "/etc/php74/conf.d/00_curl.ini", O_RDONLY) = 4 +- openat(AT_FDCWD, "/etc/php74/conf.d/00_json.ini", O_RDONLY) = 4 +- openat(AT_FDCWD, "/etc/php74/conf.d/00_opcache.ini", O_RDONLY) = 4 +- openat(AT_FDCWD, "/etc/php74/conf.d/00_xml.ini", O_RDONLY) = 4 +- openat(AT_FDCWD, "/etc/php74/conf.d/opcache.ini", O_RDONLY) = 4 +- openat(AT_FDCWD, "/etc/php74/conf.d/timezone.ini", O_RDONLY) = 4 +- openat(AT_FDCWD, "/etc/php74/cli.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = 4 +- openat(AT_FDCWD, "/etc/php74/cli.d/00_readline.ini", O_RDONLY) = 4 +- openat(AT_FDCWD, "/etc/php74/cli.d/php.ini", O_RDONLY) = 4 + +1. load php-.ini; if exists treat as main php.ini +2. load php.ini if php-.ini was not found +3. load conf.d/DD_*.ini to load extra extension and zend_extension lines +4. load conf.d/*.ini to load extra ini settings not involving loading extension +5. load .d same way as conf.d + +This allows minimal patch, but still allowing to have main php ini and sapi specific overrides + +To test which is main php.ini: $ php -r 'var_dump(array(get_cfg_var("cfg_file_path"),php_ini_loaded_file()));' https://github.com/pld-linux/php/commit/762ec2e ---- php-7.0.0RC6.orig/main/php_ini.c 2015-11-10 23:58:52.227101032 +0200 -+++ php-7.0.0RC6/main/php_ini.c 2015-11-11 00:01:43.502674750 +0200 -@@ -375,12 +375,19 @@ - } +diff --git a/main/php_ini.c b/main/php_ini.c +index d508c13b50..2cf28eb7f5 100644 +--- a/main/php_ini.c ++++ b/main/php_ini.c +@@ -410,6 +410,11 @@ static void php_load_zend_extension_cb(void *arg) { } + #endif /* }}} */ +static int php_csort(const struct dirent **a, const struct dirent **b) @@ -17,90 +41,7 @@ https://github.com/pld-linux/php/commit/762ec2e /* {{{ php_init_config */ 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; -@@ -557,8 +564,26 @@ - } - } - } -+ /* Search (global) php.ini file in search path */ -+ if (!fh.handle.fp) { -+ fh.handle.fp = php_fopen_with_path("php.ini", "r", php_ini_search_path, &opened_path); -+ if (fh.handle.fp) { -+ fh.filename = ZSTR_VAL(opened_path); -+ -+ // 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); -+ open_basedir = PG(open_basedir); -+ PG(open_basedir) = NULL; -+ fh.handle.fp = NULL; -+ -+ php_ini_loaded_file = estrdup(fh.filename); -+ fh.filename = 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) { - const char *fmt = "php-%s.ini"; - char *ini_fname; -@@ -568,15 +593,8 @@ - if (fh.handle.fp) { - fh.filename = ZSTR_VAL(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, &opened_path); -- if (fh.handle.fp) { -- fh.filename = ZSTR_VAL(opened_path); -- } -- } -+ } - } - - if (free_ini_search_path) { -@@ -593,14 +611,28 @@ - - { - zval tmp; -+ // use main php.ini if loaded -+ // see https://github.com/pld-linux/php/commit/762ec2e -+ // test with: -+ // php -r 'var_dump(array(get_cfg_var("cfg_file_path"),php_ini_loaded_file()));' -+ if (php_ini_loaded_file) { -+ if (fh.filename) { -+ efree((char *)fh.filename); -+ } -+ fh.filename = php_ini_loaded_file; -+ } - - ZVAL_NEW_STR(&tmp, zend_string_init(fh.filename, strlen(fh.filename), 1)); - zend_hash_str_update(&configuration_hash, "cfg_file_path", sizeof("cfg_file_path")-1, &tmp); - if (opened_path) { - zend_string_release_ex(opened_path, 0); -- } else { -+ } -+ -+ if (fh.filename) { - efree((char *)fh.filename); -+ fh.filename = NULL; - } -+ - php_ini_opened_path = zend_strndup(Z_STRVAL(tmp), Z_STRLEN(tmp)); - } - } -@@ -624,13 +656,15 @@ +@@ -661,12 +666,14 @@ int php_init_config(void) zend_llist scanned_ini_list; zend_llist_element *element; int l, total_l = 0; @@ -109,7 +50,6 @@ https://github.com/pld-linux/php/commit/762ec2e int lenpath; zend_llist_init(&scanned_ini_list, sizeof(char *), (llist_dtor_func_t) free_estring, 1); - memset(&fh2, 0, sizeof(fh2)); - bufpath = estrdup(php_ini_scanned_path); + bufpath = emalloc(strlen(php_ini_scanned_path) + strlen(fmt) + strlen(sapi_module.name)); @@ -117,7 +57,7 @@ https://github.com/pld-linux/php/commit/762ec2e for (debpath = bufpath ; debpath ; debpath=endpath) { endpath = strchr(debpath, DEFAULT_DIR_SEPARATOR); if (endpath) { -@@ -643,7 +677,7 @@ +@@ -679,7 +686,7 @@ int php_init_config(void) } lenpath = (int)strlen(debpath);