---- php-4.2.1/main/php_ini.c.orig Tue Mar 5 01:21:28 2002
-+++ php-4.2.1/main/php_ini.c Wed Jun 12 18:10:30 2002
-@@ -204,6 +204,8 @@
- char *env_location, *php_ini_search_path;
- int safe_mode_state;
- char *open_basedir;
-+ char *sapi_ini_filename;
-+ char *sapi_ini_opened_path;
- int free_ini_search_path=0;
- zend_file_handle fh;
- TSRMLS_FETCH();
-@@ -264,15 +266,10 @@
- PG(open_basedir) = NULL;
-
- fh.handle.fp = php_fopen_with_path("php.ini", "r", php_ini_search_path, &php_ini_opened_path TSRMLS_CC);
-- if (free_ini_search_path) {
-- efree(php_ini_search_path);
-- }
- PG(safe_mode) = safe_mode_state;
- PG(open_basedir) = open_basedir;
+--- php-5.3.0/main/php_ini.c 2009-07-06 17:36:45.529879052 +0200
++++ php-5.3.2/main/php_ini.c 2010-03-17 17:55:16.800313459 +0200
+@@ -358,6 +358,11 @@
+ }
+ /* }}} */
-- if (!fh.handle.fp) {
-- return SUCCESS; /* having no configuration file is ok */
-- }
-+ if (fh.handle.fp) {
- fh.type = ZEND_HANDLE_FP;
- fh.filename = php_ini_opened_path;
++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;
++ }
++ }
-@@ -288,7 +285,31 @@
- efree(php_ini_opened_path);
- php_ini_opened_path = zend_strndup(Z_STRVAL(tmp), Z_STRLEN(tmp));
+ /* 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;
+- }
+- }
}
--
-+ }
-+
-+ sapi_ini_filename = do_alloca(7+1+strlen(sapi_module.name)+1);
-+ if(sapi_ini_filename == NULL) {
-+ if (free_ini_search_path)
-+ efree(php_ini_search_path);
-+ return SUCCESS;
-+ }
-+ sprintf(sapi_ini_filename,"php-%s.ini",sapi_module.name);
-+ fh.handle.fp = php_fopen_with_path(sapi_ini_filename, "r", php_ini_search_path, &sapi_ini_opened_path TSRMLS_CC);
-+ if (free_ini_search_path) {
-+ efree(php_ini_search_path);
-+ }
-+ if (!fh.handle.fp) {
-+ return SUCCESS; /* having no configuration file is ok */
-+ }
-+ fh.type = ZEND_HANDLE_FP;
-+ fh.filename = sapi_ini_opened_path;
-+
-+ zend_parse_ini_file(&fh, 1, php_config_ini_parser_cb, &extension_lists);
-+
-+ if (sapi_ini_opened_path)
-+ efree(sapi_ini_opened_path);
-+ free_alloca(sapi_ini_filename);
-+
- return SUCCESS;
- }
- /* }}} */
+
+ if (free_ini_search_path) {
+@@ -610,12 +625,14 @@
+ zend_llist scanned_ini_list;
+ zend_llist_element *element;
+ int l, total_l = 0;
++ const char *fmt = "%s:" PHP_CONFIG_FILE_PATH "/%s.d";
+
+ /* 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);
+
+- if ((ndir = php_scandir(ini_path, &namelist, 0, php_alphasort)) > 0) {
++ if ((ndir = php_scandir(ini_path, &namelist, 0, php_csort)) > 0) {
+ memset(&fh, 0, sizeof(fh));
+
+ for (i = 0; i < ndir; i++) {