--- php-5.3.2.orig/main/php_ini.c 2010-02-03 21:13:18.000000000 +0100 +++ php-5.3.2/main/php_ini.c 2010-06-12 21:09:14.000000000 +0200 @@ -687,6 +687,48 @@ php_ini_scanned_path = NULL; } + char *php_ini_extra = getenv("PHP_INI_EXTRA"); + if (!sapi_module.php_ini_ignore && php_ini_extra) { + struct stat sb; + zend_file_handle fh; + RESET_ACTIVE_INI_HASH(); + memset(&fh, 0, sizeof(fh)); + + if (VCWD_STAT(php_ini_extra, &sb) == 0) { + if (S_ISREG(sb.st_mode)) { + if ((fh.handle.fp = VCWD_FOPEN(php_ini_extra, "r"))) { + fh.filename = php_ini_extra; + fh.type = ZEND_HANDLE_FP; + + /* add an fake-host section so our settings will be changed to PHP_INI_SYSTEM during merge */ + zval fakehost; + Z_STRLEN(fakehost) = sizeof("HOST=\%fake\%") - 1; + Z_STRVAL(fakehost) = zend_strndup("HOST=\%fake\%", Z_STRLEN(fakehost)); + Z_TYPE(fakehost) = IS_STRING; + php_ini_parser_cb(&fakehost, NULL, NULL, ZEND_INI_PARSER_SECTION, &configuration_hash TSRMLS_CC); + + if (zend_parse_ini_file(&fh, 1, ZEND_INI_SCANNER_NORMAL, (zend_ini_parser_cb_t) php_ini_parser_cb, &configuration_hash TSRMLS_CC) == SUCCESS) { + /* Here, add it to the list of ini files read */ + int add_len = strlen(php_ini_extra) + 2; + + int php_ini_scanned_files_len = (php_ini_scanned_files) ? strlen(php_ini_scanned_files) + 1 : 0; + php_ini_scanned_files = (char *) realloc(php_ini_scanned_files, php_ini_scanned_files_len + add_len + 1); + if (!php_ini_scanned_files_len) { + *php_ini_scanned_files = '\0'; + } + add_len += php_ini_scanned_files_len; + if (php_ini_scanned_files_len) { + php_ini_scanned_files[php_ini_scanned_files_len - 2] = '\0'; + strlcat(php_ini_scanned_files, ",\n", add_len); + } + strlcat(php_ini_scanned_files, php_ini_extra, add_len); + strlcat(php_ini_scanned_files, "\n", add_len); + } + } + } + } + } + if (sapi_module.ini_entries) { /* Reset active ini section */ RESET_ACTIVE_INI_HASH(); diff -Naur php-5.3.2.orig/sapi/cgi/cgi_main.c php-5.3.2/sapi/cgi/cgi_main.c --- php-5.3.2.orig/sapi/cgi/cgi_main.c 2012-09-06 13:37:47.599471003 +0200 +++ php-5.3.2/sapi/cgi/cgi_main.c 2012-09-06 14:06:10.504809677 +0200 @@ -832,6 +832,9 @@ } if (php_ini_has_per_host_config()) { + /* activate our fake host entries. lowercase string required! */ + php_ini_activate_per_host_config("\%fake\%", sizeof("\%fake\%") TSRMLS_CC); + /* Activate per-host-system-configuration defined in php.ini and stored into configuration_hash during startup */ if (fcgi_is_fastcgi()) { fcgi_request *request = (fcgi_request*) SG(server_context);