jani Wed Aug 13 01:01:29 2008 UTC Modified files: (Branch: PHP_5_2) /php-src Makefile.global NEWS /php-src/ext/standard info.c /php-src/main php_ini.c /php-src/sapi/cgi cgi_main.c /php-src/sapi/cli php_cli.c /php-src/sapi/milter php_milter.c Log: MFH: [DOC]- Added methods to change/disable --with-config-file-scan-dir=PATH at MFH: [DOC] startup: MFH: [DOC] MFH: [DOC] To disable: Override default php.ini by using both -c and -n with MFH: [DOC] CGI/CLI or set "PHP_INI_SCAN_DIR" environment variable MFH: [DOC] to an empty string. MFH: [DOC] MFH: [DOC] To change: Simply set "PHP_INI_SCAN_DIR" environment variable to point MFH: [DOC] to another path. MFH: - Fixed bug #42604 ("make test" fails with --with-config-file-scan-dir=/some/path) MFH: - Implemented FR #45114 (Option to change --with-config-file-scan-dir)
http://cvs.php.net/viewvc.cgi/php-src/Makefile.global?r1=1.57.2.5.2.15&r2=1.57.2.5.2.16&diff_format=u Index: php-src/Makefile.global diff -u php-src/Makefile.global:1.57.2.5.2.15 php-src/Makefile.global:1.57.2.5.2.16 --- php-src/Makefile.global:1.57.2.5.2.15 Wed Jul 30 23:57:14 2008 +++ php-src/Makefile.global Wed Aug 13 01:01:27 2008 @@ -87,16 +87,21 @@ CC="$(CC)" \ $(PHP_EXECUTABLE) $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -d extension_dir=modules/ $(PHP_TEST_SHARED_EXTENSIONS) tests/; \ elif test ! -z "$(SAPI_CLI_PATH)" && test -x "$(SAPI_CLI_PATH)"; then \ - INI_FILE=`$(top_builddir)/$(SAPI_CLI_PATH) -r 'echo php_ini_loaded_file();'`; \ + INI_FILE=`$(top_builddir)/$(SAPI_CLI_PATH) -d 'display_errors=stderr' -r 'echo php_ini_loaded_file();' 2> /dev/null`; \ if test "$$INI_FILE"; then \ $(EGREP) -v '^(zend_)?extension(_debug)?(_ts)?[\t\ ]*=' "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \ else \ echo > $(top_builddir)/tmp-php.ini; \ fi; \ + INI_SCANNED_PATH=`$(top_builddir)/$(SAPI_CLI_PATH) -d 'display_errors=stderr' -r '$$a = explode(",\n", trim(php_ini_scanned_files())); echo $$a[0];' 2> /dev/null`; \ + if test "$$INI_SCANNED_PATH"; then \ + INI_SCANNED_PATH=`$(top_srcdir)/build/shtool path -d $$INI_SCANNED_PATH`; \ + $(EGREP) -h -v '^(zend_)?extension(_debug)?(_ts)?[\t\ ]*=' "$$INI_SCANNED_PATH"/*.ini >> $(top_builddir)/tmp-php.ini; \ + fi; \ TEST_PHP_EXECUTABLE=$(top_builddir)/$(SAPI_CLI_PATH) \ TEST_PHP_SRCDIR=$(top_srcdir) \ CC="$(CC)" \ - $(top_builddir)/$(SAPI_CLI_PATH) $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -c $(top_builddir)/tmp-php.ini -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \ + $(top_builddir)/$(SAPI_CLI_PATH) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \ else \ echo "ERROR: Cannot run tests without CLI sapi."; \ fi http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.1196&r2=1.2027.2.547.2.1197&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.1196 php-src/NEWS:1.2027.2.547.2.1197 --- php-src/NEWS:1.2027.2.547.2.1196 Tue Aug 12 21:03:35 2008 +++ php-src/NEWS Wed Aug 13 01:01:27 2008 @@ -4,6 +4,9 @@ - Reverted fix for bug #44197 due to behaviour change in minor version. (Felipe) +- Added "PHP_INI_SCAN_DIR" environment variable which can be used to either + disable or change the compile time ini scan directory (FR 45114). (Jani) + - Fixed security issues detailed in CVE-2008-2665 and CVE-2008-2666. (Christian Hoffmann) - Fixed simplexml asXML() not to lose encoding when dumping entire document @@ -73,6 +76,8 @@ (Jani) - Fixed bug #43993 (mb_substr_count() behaves differently to substr_count() with overlapping needles). (Moriyoshi) +- Fixed bug #42604 ("make test" fails with --with-config-file-scan-dir=path). + (Jani) - Fixed bug #41348 (OCI8: allow compilation with Oracle 8.1). (Chris Jones) 01 May 2008, PHP 5.2.6 http://cvs.php.net/viewvc.cgi/php-src/ext/standard/info.c?r1=1.249.2.10.2.17&r2=1.249.2.10.2.18&diff_format=u Index: php-src/ext/standard/info.c diff -u php-src/ext/standard/info.c:1.249.2.10.2.17 php-src/ext/standard/info.c:1.249.2.10.2.18 --- php-src/ext/standard/info.c:1.249.2.10.2.17 Wed Mar 5 21:09:29 2008 +++ php-src/ext/standard/info.c Wed Aug 13 01:01:28 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: info.c,v 1.249.2.10.2.17 2008/03/05 21:09:29 pajoye Exp $ */ +/* $Id: info.c,v 1.249.2.10.2.18 2008/08/13 01:01:28 jani Exp $ */ #include "php.h" #include "php_ini.h" @@ -57,6 +57,7 @@ } \ PHPAPI extern char *php_ini_opened_path; +PHPAPI extern char *php_ini_scanned_path; PHPAPI extern char *php_ini_scanned_files; static int php_info_write_wrapper(const char *str, uint str_length) @@ -501,14 +502,9 @@ php_info_print_table_row(2, "Configuration File (php.ini) Path", PHP_CONFIG_FILE_PATH); php_info_print_table_row(2, "Loaded Configuration File", php_ini_opened_path ? php_ini_opened_path : "(none)"); + php_info_print_table_row(2, "Scan this dir for additional .ini files", php_ini_scanned_path ? php_ini_scanned_path : "(none)"); + php_info_print_table_row(2, "additional .ini files parsed", php_ini_scanned_files ? php_ini_scanned_files : "(none)"); - if (strlen(PHP_CONFIG_FILE_SCAN_DIR)) { - php_info_print_table_row(2, "Scan this dir for additional .ini files", PHP_CONFIG_FILE_SCAN_DIR); - if (php_ini_scanned_files) { - php_info_print_table_row(2, "additional .ini files parsed", php_ini_scanned_files); - } - } - snprintf(temp_api, sizeof(temp_api), "%d", PHP_API_VERSION); php_info_print_table_row(2, "PHP API", temp_api); http://cvs.php.net/viewvc.cgi/php-src/main/php_ini.c?r1=1.136.2.4.2.16&r2=1.136.2.4.2.17&diff_format=u Index: php-src/main/php_ini.c diff -u php-src/main/php_ini.c:1.136.2.4.2.16 php-src/main/php_ini.c:1.136.2.4.2.17 --- php-src/main/php_ini.c:1.136.2.4.2.16 Mon Dec 31 07:20:15 2007 +++ php-src/main/php_ini.c Wed Aug 13 01:01:29 2008 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_ini.c,v 1.136.2.4.2.16 2007/12/31 07:20:15 sebastian Exp $ */ +/* $Id: php_ini.c,v 1.136.2.4.2.17 2008/08/13 01:01:29 jani Exp $ */ #include "php.h" #include "ext/standard/info.h" @@ -50,6 +50,7 @@ static HashTable configuration_hash; PHPAPI char *php_ini_opened_path=NULL; static php_extension_lists extension_lists; +PHPAPI char *php_ini_scanned_path=NULL; PHPAPI char *php_ini_scanned_files=NULL; /* {{{ php_ini_displayer_cb @@ -448,9 +449,18 @@ PG(safe_mode) = 0; PG(open_basedir) = NULL; + /* + * Find and open actual ini file + */ + memset(&fh, 0, sizeof(fh)); - /* Check if php_ini_path_override is a file */ - if (!sapi_module.php_ini_ignore) { + + /* If SAPI does not want to ignore all ini files OR an overriding file/path is given. + * This allows disabling scanning for ini files in the PHP_CONFIG_FILE_SCAN_DIR but still + * load an optional ini file. */ + if (!sapi_module.php_ini_ignore || sapi_module.php_ini_path_override) { + + /* Check if php_ini_file_name is a file and can be opened */ if (php_ini_file_name && php_ini_file_name[0]) { struct stat statbuf; @@ -463,7 +473,8 @@ } } } - /* Search php-%sapi-module-name%.ini file in search path */ + + /* Otherwise search for php-%sapi-module-name%.ini file in search path */ if (!fh.handle.fp) { const char *fmt = "php-%s.ini"; char *ini_fname; @@ -474,7 +485,8 @@ fh.filename = php_ini_opened_path; } } - /* Search php.ini file in search 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) { @@ -509,20 +521,31 @@ } } - /* If the config_file_scan_dir is set at compile-time, go and scan this directory and - * parse any .ini files found in this directory. */ - if (!sapi_module.php_ini_ignore && strlen(PHP_CONFIG_FILE_SCAN_DIR)) { + /* Check for PHP_INI_SCAN_DIR environment variable to override/set config file scan directory */ + php_ini_scanned_path = getenv("PHP_INI_SCAN_DIR"); + if (!php_ini_scanned_path) { + /* Or fall back using possible --with-config-file-scan-dir setting (defaults to empty string!) */ + php_ini_scanned_path = PHP_CONFIG_FILE_SCAN_DIR; + } + int php_ini_scanned_path_len = strlen(php_ini_scanned_path); + + /* Scan and parse any .ini files found in scan path if path not empty. */ + if (!sapi_module.php_ini_ignore && php_ini_scanned_path_len) { struct dirent **namelist; int ndir, i; - if ((ndir = php_scandir(PHP_CONFIG_FILE_SCAN_DIR, &namelist, 0, php_alphasort)) > 0) { + if ((ndir = php_scandir(php_ini_scanned_path, &namelist, 0, php_alphasort)) > 0) { for (i = 0; i < ndir; i++) { /* check for a .ini extension */ if (!(p = strrchr(namelist[i]->d_name, '.')) || (p && strcmp(p, ".ini"))) { free(namelist[i]); continue; } - snprintf(ini_file, MAXPATHLEN, "%s%c%s", PHP_CONFIG_FILE_SCAN_DIR, DEFAULT_SLASH, namelist[i]->d_name); + if (IS_SLASH(php_ini_scanned_path[php_ini_scanned_path_len - 1])) { + snprintf(ini_file, MAXPATHLEN, "%s%s", php_ini_scanned_path, namelist[i]->d_name); + } else { + snprintf(ini_file, MAXPATHLEN, "%s%c%s", php_ini_scanned_path, DEFAULT_SLASH, namelist[i]->d_name); + } if (VCWD_STAT(ini_file, &sb) == 0) { if (S_ISREG(sb.st_mode)) { if ((fh.handle.fp = VCWD_FOPEN(ini_file, "r"))) { @@ -555,6 +578,9 @@ } zend_llist_destroy(&scanned_ini_list); } + } else { + /* Make sure an empty php_ini_scanned_path ends up as NULL */ + php_ini_scanned_path = NULL; } if (sapi_module.ini_entries) { http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/cgi_main.c?r1=1.267.2.15.2.58&r2=1.267.2.15.2.59&diff_format=u Index: php-src/sapi/cgi/cgi_main.c diff -u php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.58 php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.59 --- php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.58 Tue Jul 15 13:38:29 2008 +++ php-src/sapi/cgi/cgi_main.c Wed Aug 13 01:01:29 2008 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: cgi_main.c,v 1.267.2.15.2.58 2008/07/15 13:38:29 dmitry Exp $ */ +/* $Id: cgi_main.c,v 1.267.2.15.2.59 2008/08/13 01:01:29 jani Exp $ */ #include "php.h" #include "php_globals.h" @@ -1678,17 +1678,6 @@ && !fastcgi #endif ) { - if (cgi_sapi_module.php_ini_path_override && cgi_sapi_module.php_ini_ignore) { - no_headers = 1; - php_output_startup(); - php_output_activate(TSRMLS_C); - SG(headers_sent) = 1; - php_printf("You cannot use both -n and -c switch. Use -h for help.\n"); - php_end_ob_buffers(1 TSRMLS_CC); - exit_status = 1; - goto out; - } - while ((c = php_getopt(argc, argv, OPTIONS, &php_optarg, &php_optind, 0)) != -1) { switch (c) { http://cvs.php.net/viewvc.cgi/php-src/sapi/cli/php_cli.c?r1=1.129.2.13.2.26&r2=1.129.2.13.2.27&diff_format=u Index: php-src/sapi/cli/php_cli.c diff -u php-src/sapi/cli/php_cli.c:1.129.2.13.2.26 php-src/sapi/cli/php_cli.c:1.129.2.13.2.27 --- php-src/sapi/cli/php_cli.c:1.129.2.13.2.26 Wed Jul 23 11:25:50 2008 +++ php-src/sapi/cli/php_cli.c Wed Aug 13 01:01:29 2008 @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_cli.c,v 1.129.2.13.2.26 2008/07/23 11:25:50 tony2001 Exp $ */ +/* $Id: php_cli.c,v 1.129.2.13.2.27 2008/08/13 01:01:29 jani Exp $ */ #include "php.h" #include "php_globals.h" @@ -729,12 +729,6 @@ CG(in_compilation) = 0; /* not initialized but needed for several options */ EG(uninitialized_zval_ptr) = NULL; - if (cli_sapi_module.php_ini_path_override && cli_sapi_module.php_ini_ignore) { - PUTS("You cannot use both -n and -c switch. Use -h for help.\n"); - exit_status=1; - goto out_err; - } - while ((c = php_getopt(argc, argv, OPTIONS, &php_optarg, &php_optind, 0)) != -1) { switch (c) { http://cvs.php.net/viewvc.cgi/php-src/sapi/milter/php_milter.c?r1=1.14.2.2.2.4&r2=1.14.2.2.2.5&diff_format=u Index: php-src/sapi/milter/php_milter.c diff -u php-src/sapi/milter/php_milter.c:1.14.2.2.2.4 php-src/sapi/milter/php_milter.c:1.14.2.2.2.5 --- php-src/sapi/milter/php_milter.c:1.14.2.2.2.4 Mon Dec 31 07:20:16 2007 +++ php-src/sapi/milter/php_milter.c Wed Aug 13 01:01:29 2008 @@ -18,6 +18,7 @@ +----------------------------------------------------------------------+ */ +/* $Id: php_milter.c,v 1.14.2.2.2.5 2008/08/13 01:01:29 jani Exp $ */ #include "php.h" #include "php_globals.h" @@ -1006,13 +1007,6 @@ zend_uv.html_errors = 0; /* tell the engine we're in non-html mode */ - if (milter_sapi_module.php_ini_path_override && milter_sapi_module.php_ini_ignore) { - SG(headers_sent) = 1; - SG(request_info).no_headers = 1; - PUTS("You cannot use both -n and -c switch. Use -h for help.\n"); - exit(1); - } - while ((c = ap_php_getopt(argc, argv, OPTSTRING)) != -1) { switch (c) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php