]>
Commit | Line | Data |
---|---|---|
517bdcc8 ER |
1 | The ini loading order is in PLD (as of 7.4.0beta2): |
2 | - openat(AT_FDCWD, "/etc/php74/php-cli.ini", O_RDONLY) = -1 ENOENT (No such file or directory) | |
3 | - openat(AT_FDCWD, "/etc/php74/php.ini", O_RDONLY) = 4 | |
4 | - openat(AT_FDCWD, "/etc/php74/conf.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = 4 | |
5 | - openat(AT_FDCWD, "/etc/php74/conf.d/00_curl.ini", O_RDONLY) = 4 | |
6 | - openat(AT_FDCWD, "/etc/php74/conf.d/00_json.ini", O_RDONLY) = 4 | |
7 | - openat(AT_FDCWD, "/etc/php74/conf.d/00_opcache.ini", O_RDONLY) = 4 | |
8 | - openat(AT_FDCWD, "/etc/php74/conf.d/00_xml.ini", O_RDONLY) = 4 | |
9 | - openat(AT_FDCWD, "/etc/php74/conf.d/opcache.ini", O_RDONLY) = 4 | |
10 | - openat(AT_FDCWD, "/etc/php74/conf.d/timezone.ini", O_RDONLY) = 4 | |
11 | - openat(AT_FDCWD, "/etc/php74/cli.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = 4 | |
12 | - openat(AT_FDCWD, "/etc/php74/cli.d/00_readline.ini", O_RDONLY) = 4 | |
13 | - openat(AT_FDCWD, "/etc/php74/cli.d/php.ini", O_RDONLY) = 4 | |
14 | ||
15 | 1. load php-<sapi>.ini; if exists treat as main php.ini | |
16 | 2. load php.ini if php-<sapi>.ini was not found | |
17 | 3. load conf.d/DD_*.ini to load extra extension and zend_extension lines | |
18 | 4. load conf.d/*.ini to load extra ini settings not involving loading extension | |
19 | 5. load <sapi>.d same way as conf.d | |
20 | ||
21 | This allows minimal patch, but still allowing to have main php ini and sapi specific overrides | |
22 | ||
8f2c8fef | 23 | To test which is main php.ini: |
b002612e ER |
24 | $ php -r 'var_dump(array(get_cfg_var("cfg_file_path"),php_ini_loaded_file()));' |
25 | ||
26 | https://github.com/pld-linux/php/commit/762ec2e | |
27 | ||
8f2c8fef ER |
28 | diff --git a/main/php_ini.c b/main/php_ini.c |
29 | index d508c13b50..2cf28eb7f5 100644 | |
30 | --- a/main/php_ini.c | |
31 | +++ b/main/php_ini.c | |
32 | @@ -410,6 +410,11 @@ static void php_load_zend_extension_cb(void *arg) { } | |
33 | #endif | |
c0240cb1 | 34 | /* }}} */ |
35 | ||
36 | +static int php_csort(const struct dirent **a, const struct dirent **b) | |
37 | +{ | |
38 | + return strcmp((*a)->d_name,(*b)->d_name); | |
39 | +} | |
40 | + | |
41 | /* {{{ php_init_config | |
42 | */ | |
f4ee12ea | 43 | int php_init_config(void) |
8f2c8fef | 44 | @@ -661,12 +666,14 @@ int php_init_config(void) |
c0240cb1 | 45 | zend_llist scanned_ini_list; |
46 | zend_llist_element *element; | |
47 | int l, total_l = 0; | |
48 | + const char *fmt = "%s:" PHP_CONFIG_FILE_PATH "/%s.d"; | |
2e0e7ed6 AM |
49 | char *bufpath, *debpath, *endpath; |
50 | int lenpath; | |
c0240cb1 | 51 | |
c0240cb1 | 52 | zend_llist_init(&scanned_ini_list, sizeof(char *), (llist_dtor_func_t) free_estring, 1); |
b4025702 | 53 | |
2e0e7ed6 AM |
54 | - bufpath = estrdup(php_ini_scanned_path); |
55 | + bufpath = emalloc(strlen(php_ini_scanned_path) + strlen(fmt) + strlen(sapi_module.name)); | |
56 | + sprintf(bufpath, fmt, php_ini_scanned_path, sapi_module.name); | |
57 | for (debpath = bufpath ; debpath ; debpath=endpath) { | |
58 | endpath = strchr(debpath, DEFAULT_DIR_SEPARATOR); | |
59 | if (endpath) { | |
8f2c8fef | 60 | @@ -679,7 +686,7 @@ int php_init_config(void) |
2e0e7ed6 | 61 | } |
b002612e | 62 | lenpath = (int)strlen(debpath); |
c0240cb1 | 63 | |
2e0e7ed6 AM |
64 | - if (lenpath > 0 && (ndir = php_scandir(debpath, &namelist, 0, php_alphasort)) > 0) { |
65 | + if (lenpath > 0 && (ndir = php_scandir(debpath, &namelist, 0, php_csort)) > 0) { | |
c0240cb1 | 66 | |
67 | for (i = 0; i < ndir; i++) { | |
2e0e7ed6 | 68 |