]> TLD Linux GIT Repositories - packages/php.git/blobdiff - php-sapi-ini-file.patch
- updated to 7.0.2, mostly PLD merge, but TLDized (as usual) and with some patches
[packages/php.git] / php-sapi-ini-file.patch
index 7dab0cc200565d0b5252ce694e176392803ca9f0..d18142ab802495cad128c0668fc049f9a583ca17 100644 (file)
@@ -1,6 +1,11 @@
---- 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 @@
+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 @@
  }
  /* }}} */
  
 +
  /* {{{ 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;
+@@ -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, &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;
-+                              //PG(safe_mode) = safe_mode_state;
++                              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);
-+                              //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;
++
++                              php_ini_loaded_file = estrdup(fh.filename);
++                              fh.filename = NULL;
 +                      }
 +              }
  
-               /* Otherwise search for php-%sapi-module-name%.ini file in search path */
+-              /* 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;
+@@ -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, &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 = ZSTR_VAL(opened_path);
 -                      }
 -              }
++              }
        }
  
        if (free_ini_search_path) {
-@@ -645,13 +645,15 @@ int php_init_config(TSRMLS_D)
+@@ -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(opened_path);
+-                      } 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 @@
                zend_llist scanned_ini_list;
                zend_llist_element *element;
                int l, total_l = 0;
                for (debpath = bufpath ; debpath ; debpath=endpath) {
                        endpath = strchr(debpath, DEFAULT_DIR_SEPARATOR);
                        if (endpath) {
-@@ -664,7 +666,7 @@ int php_init_config(TSRMLS_D)
+@@ -643,7 +677,7 @@
                        }
-                       lenpath = strlen(debpath);
+                       lenpath = (int)strlen(debpath);
  
 -                      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++) {
  
-