]> git.pld-linux.org Git - packages/php.git/blob - php-sapi-ini-file.patch
- up to 8.0.7; soname to reflect that this is php 8
[packages/php.git] / php-sapi-ini-file.patch
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
23 To test which is main php.ini:
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
28 --- php-8.0.0rc1/main/php_ini.c~        2020-10-09 18:15:48.000000000 +0300
29 +++ php-8.0.0rc1/main/php_ini.c 2020-10-09 18:42:20.087488856 +0300
30 @@ -65,6 +65,11 @@
31  PHPAPI char *php_ini_scanned_path=NULL;
32  PHPAPI char *php_ini_scanned_files=NULL;
33  
34 +static int php_csort(const struct dirent **a, const struct dirent **b)
35 +{
36 +       return strcmp((*a)->d_name,(*b)->d_name);
37 +}
38 +
39  /* {{{ php_ini_displayer_cb */
40  static ZEND_COLD void php_ini_displayer_cb(zend_ini_entry *ini_entry, int type)
41  {
42 @@ -661,12 +666,14 @@ int php_init_config(void)
43                 zend_llist scanned_ini_list;
44                 zend_llist_element *element;
45                 int l, total_l = 0;
46 +               const char *fmt = "%s:" PHP_CONFIG_FILE_PATH "/%s.d";
47                 char *bufpath, *debpath, *endpath;
48                 int lenpath;
49  
50                 zend_llist_init(&scanned_ini_list, sizeof(char *), (llist_dtor_func_t) free_estring, 1);
51  
52 -               bufpath = estrdup(php_ini_scanned_path);
53 +               bufpath = emalloc(strlen(php_ini_scanned_path) + strlen(fmt) + strlen(sapi_module.name));
54 +               sprintf(bufpath, fmt, php_ini_scanned_path, sapi_module.name);
55                 for (debpath = bufpath ; debpath ; debpath=endpath) {
56                         endpath = strchr(debpath, DEFAULT_DIR_SEPARATOR);
57                         if (endpath) {
58 @@ -679,7 +686,7 @@ int php_init_config(void)
59                         }
60                         lenpath = (int)strlen(debpath);
61  
62 -                       if (lenpath > 0 && (ndir = php_scandir(debpath, &namelist, 0, php_alphasort)) > 0) {
63 +                       if (lenpath > 0 && (ndir = php_scandir(debpath, &namelist, 0, php_csort)) > 0) {
64  
65                                 for (i = 0; i < ndir; i++) {
66  
This page took 0.032197 seconds and 3 git commands to generate.