jani Wed Aug 13 00:53:29 2008 UTC Modified files: (Branch: PHP_5_3) /php-src Makefile.global /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
http://cvs.php.net/viewvc.cgi/php-src/Makefile.global?r1=1.57.2.5.2.14.2.2&r2=1.57.2.5.2.14.2.3&diff_format=u Index: php-src/Makefile.global diff -u php-src/Makefile.global:1.57.2.5.2.14.2.2 php-src/Makefile.global:1.57.2.5.2.14.2.3 --- php-src/Makefile.global:1.57.2.5.2.14.2.2 Mon Jul 21 22:41:39 2008 +++ php-src/Makefile.global Wed Aug 13 00:53: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/ext/standard/info.c?r1=1.249.2.10.2.14.2.10&r2=1.249.2.10.2.14.2.11&diff_format=u Index: php-src/ext/standard/info.c diff -u php-src/ext/standard/info.c:1.249.2.10.2.14.2.10 php-src/ext/standard/info.c:1.249.2.10.2.14.2.11 --- php-src/ext/standard/info.c:1.249.2.10.2.14.2.10 Tue Jul 8 08:37:56 2008 +++ php-src/ext/standard/info.c Wed Aug 13 00:53:28 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: info.c,v 1.249.2.10.2.14.2.10 2008/07/08 08:37:56 tony2001 Exp $ */ +/* $Id: info.c,v 1.249.2.10.2.14.2.11 2008/08/13 00:53: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) @@ -483,14 +484,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.15.2.9&r2=1.136.2.4.2.15.2.10&diff_format=u Index: php-src/main/php_ini.c diff -u php-src/main/php_ini.c:1.136.2.4.2.15.2.9 php-src/main/php_ini.c:1.136.2.4.2.15.2.10 --- php-src/main/php_ini.c:1.136.2.4.2.15.2.9 Tue Aug 12 17:20:25 2008 +++ php-src/main/php_ini.c Wed Aug 13 00:53:28 2008 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_ini.c,v 1.136.2.4.2.15.2.9 2008/08/12 17:20:25 felipe Exp $ */ +/* $Id: php_ini.c,v 1.136.2.4.2.15.2.10 2008/08/13 00:53:28 jani Exp $ */ #include "php.h" #include "ext/standard/info.h" @@ -54,6 +54,7 @@ static int has_per_host_config = 0; 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 @@ -520,9 +521,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; @@ -535,7 +545,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; @@ -546,7 +557,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) { @@ -584,9 +596,16 @@ } } - /* 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; struct stat sb; @@ -600,7 +619,7 @@ /* Reset active ini section */ RESET_ACTIVE_INI_HASH(); - 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) { zend_llist_init(&scanned_ini_list, sizeof(char *), (llist_dtor_func_t) free_estring, 1); memset(&fh, 0, sizeof(fh)); @@ -611,7 +630,11 @@ 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"))) { @@ -649,6 +672,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.50.2.22&r2=1.267.2.15.2.50.2.23&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.50.2.22 php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.50.2.23 --- php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.50.2.22 Mon Aug 4 07:20:15 2008 +++ php-src/sapi/cgi/cgi_main.c Wed Aug 13 00:53:28 2008 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: cgi_main.c,v 1.267.2.15.2.50.2.22 2008/08/04 07:20:15 dmitry Exp $ */ +/* $Id: cgi_main.c,v 1.267.2.15.2.50.2.23 2008/08/13 00:53:28 jani Exp $ */ #include "php.h" #include "php_globals.h" @@ -1725,17 +1725,6 @@ CG(interactive) = 0; if (!cgi && !fastcgi) { - 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, 2)) != -1) { switch (c) { http://cvs.php.net/viewvc.cgi/php-src/sapi/cli/php_cli.c?r1=1.129.2.13.2.22.2.13&r2=1.129.2.13.2.22.2.14&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.22.2.13 php-src/sapi/cli/php_cli.c:1.129.2.13.2.22.2.14 --- php-src/sapi/cli/php_cli.c:1.129.2.13.2.22.2.13 Tue Aug 12 16:43:52 2008 +++ php-src/sapi/cli/php_cli.c Wed Aug 13 00:53:28 2008 @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_cli.c,v 1.129.2.13.2.22.2.13 2008/08/12 16:43:52 dmitry Exp $ */ +/* $Id: php_cli.c,v 1.129.2.13.2.22.2.14 2008/08/13 00:53:28 jani Exp $ */ #include "php.h" #include "php_globals.h" @@ -727,12 +727,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, 2)) != -1) { switch (c) { http://cvs.php.net/viewvc.cgi/php-src/sapi/milter/php_milter.c?r1=1.14.2.2.2.3.2.5&r2=1.14.2.2.2.3.2.6&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.3.2.5 php-src/sapi/milter/php_milter.c:1.14.2.2.2.3.2.6 --- php-src/sapi/milter/php_milter.c:1.14.2.2.2.3.2.5 Wed Jul 16 11:59:15 2008 +++ php-src/sapi/milter/php_milter.c Wed Aug 13 00:53:28 2008 @@ -18,6 +18,7 @@ +----------------------------------------------------------------------+ */ +/* $Id: php_milter.c,v 1.14.2.2.2.3.2.6 2008/08/13 00:53:28 jani Exp $ */ #include "php.h" #include "php_globals.h" @@ -1058,13 +1059,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