From a27ed294dfdf65a08bffc9b41ab10f6c7bcc72ec Mon Sep 17 00:00:00 2001 From: Zeev Suraski Date: Sat, 28 Aug 1999 23:06:07 +0000 Subject: [PATCH] Add -d switch --- ChangeLog | 4 +++- cgi_main.c | 40 ++++++++++++++++++++++++++++++---------- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8d9746bc5cb..4b33c61fb79 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ PHP 4.0 CHANGE LOG ChangeLog ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ?? 1999, Version 4.0 Beta 3 +- Added -d switch to the CGI binary that allows overriding php.ini values + from the command line (Zeev) - Fixed a crash that would occur if wddx_deserialize did not receive a valid packet (Andrey) - Fixed a bugglet when redefining a class at run-time (Andi, Zend library) @@ -11,7 +13,7 @@ PHP 4.0 CHANGE LOG ChangeLog - Fixed bug in ISAPI header sending function (Charles) - Fixed memory leak when using undefined values (Andi & Zeev, Zend library) - Added output_buffering directive to php.ini, to enable output buffering - for all PHP scripts (default is off). + for all PHP scripts - default is off (Zeev). - Fixed some more class inheritance issues (Zeev, Zend library) - Fixed Apache build wrt to shared modules on FreeBSD/Linux (Sascha) - Added session.extern_referer_chk which checks whether session ids were diff --git a/cgi_main.c b/cgi_main.c index 96caa39f16f..57735f396f4 100644 --- a/cgi_main.c +++ b/cgi_main.c @@ -162,17 +162,18 @@ static void php_cgi_usage(char *argv0) " [-s]" " [-v] [-i] [-f ] | " "{ [args...]}\n" - " -q Quiet-mode. Suppress HTTP Header output.\n" - " -s Display colour syntax highlighted source.\n" - " -f Parse . Implies `-q'\n" - " -v Version number\n" - " -c Look for php.ini file in this directory\n" + " -q Quiet-mode. Suppress HTTP Header output.\n" + " -s Display colour syntax highlighted source.\n" + " -f Parse . Implies `-q'\n" + " -v Version number\n" + " -c Look for php.ini file in this directory\n" #if SUPPORT_INTERACTIVE - " -a Run interactively\n" + " -a Run interactively\n" #endif - " -e Generate extended information for debugger/profiler\n" - " -i PHP information\n" - " -h This help\n", prog); + " -d foo[=bar] Define INI entry foo with value 'bar'\n" + " -e Generate extended information for debugger/profiler\n" + " -i PHP information\n" + " -h This help\n", prog); } @@ -193,6 +194,22 @@ static void init_request_info(SLS_D) } +void define_command_line_ini_entry(char *arg) +{ + char *name, *value; + + name = arg; + value = strchr(arg, '='); + if (value) { + *value = 0; + value++; + } else { + value = "1"; + } + php_alter_ini_entry(name, strlen(name), value, strlen(value), PHP_INI_SYSTEM); +} + + int main(int argc, char *argv[]) { int cgi = 0, c, i, len; @@ -288,7 +305,7 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine if (!cgi) { /* never execute the arguments if you are a CGI */ request_info.php_argv0 = NULL; - while ((c = getopt(argc, argv, "c:qvisnaeh?vf:")) != -1) { + while ((c = getopt(argc, argv, "cd:qvisnaeh?vf:")) != -1) { switch (c) { case 'f': if (!cgi_started){ @@ -361,6 +378,9 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine php_cgi_usage(argv[0]); exit(1); break; + case 'd': + define_command_line_ini_entry(optarg); + break; default: break; }