X-Git-Url: https://git.tld-linux.org/?p=packages%2Fphp.git;a=blobdiff_plain;f=php-sapi-ini-file.patch;h=5da800a8dd6e25554fc8111f66d68fd78fd53683;hp=7ceb984e8d3874d22d2822564162237e2cc20360;hb=954ecf20c48c9867c06e3142115d609ad4c9e81c;hpb=47130bb86ff82df6ba9ec83597ffeacabc1d888a diff --git a/php-sapi-ini-file.patch b/php-sapi-ini-file.patch index 7ceb984..5da800a 100644 --- a/php-sapi-ini-file.patch +++ b/php-sapi-ini-file.patch @@ -1,79 +1,66 @@ ---- 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 @@ - } - /* }}} */ +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-8.0.0rc1/main/php_ini.c~ 2020-10-09 18:15:48.000000000 +0300 ++++ php-8.0.0rc1/main/php_ini.c 2020-10-09 18:42:20.087488856 +0300 +@@ -65,6 +65,11 @@ + PHPAPI char *php_ini_scanned_path=NULL; + PHPAPI char *php_ini_scanned_files=NULL; +static int php_csort(const struct dirent **a, const struct dirent **b) +{ + return strcmp((*a)->d_name,(*b)->d_name); +} + - /* {{{ php_init_config - */ - int php_init_config(TSRMLS_D) -@@ -480,6 +485,24 @@ - } - } - } -+ /* 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, &php_ini_opened_path TSRMLS_CC); -+ if (fh.handle.fp) { -+ fh.filename = php_ini_opened_path; -+ //PG(safe_mode) = safe_mode_state; -+ 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; -+ efree(php_ini_opened_path); -+ fh.filename = php_ini_opened_path = NULL; -+ } -+ } - - /* Otherwise 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; - } - } -- -- /* 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; -- } -- } - } - - if (free_ini_search_path) { -@@ -627,12 +627,14 @@ + /* {{{ php_ini_displayer_cb */ + static ZEND_COLD void php_ini_displayer_cb(zend_ini_entry *ini_entry, int type) + { +@@ -661,12 +666,14 @@ int php_init_config(void) 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); - - 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) { +@@ -679,7 +686,7 @@ int php_init_config(void) + } + lenpath = (int)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++) { +