Re: PHP 4.0 Bug #5263: nested exit causes redeclaration error

From: Date: Wed, 28 Jun 2000 15:29:49 +0000
Subject: Re: PHP 4.0 Bug #5263: nested exit causes redeclaration error
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-22639@lists.php.net to get a copy of this message
Can you or can you not reproduce it? Zeev On 29 Jun 2000 MrVanes@Bigfoot.com wrote: > From: MrVanes@Bigfoot.com > Operating system: NT2000 > PHP version: 4.0.0 Release > PHP Bug Type: Reproduceable crash > Bug description: nested exit causes redeclaration error > > When called inside a function, that was called by another function, exit causes the > php4isapi.dll to produce strange results... > > Fatal error: Cannot redeclare [user_function()] in [path] on line [#] > > This behaviour was seen, but not reproduced, inside a 1st level function call. > > Exit, inside the 'main' .php file (level 0), exits without problems. > > When called as an executable (PHP3 style) this causes the server crashes with an error and > says: > CGI error. > The specified CGI application misbehaved by not returning a complete set of HTTP headers. The > headers it did return are: > [nothing] > > [PHP] > > ;;;;;;;;;;;;;;;;;;; > ; About this file ; > ;;;;;;;;;;;;;;;;;;; > ; This file controls many aspects of PHP's behavior. In order for PHP to > ; read it, it must be named 'php.ini'. PHP looks for it in the current > ; working directory, in the path designated by the environment variable > ; PHPRC, and in the path that was defined in compile time (in that order). > ; Under Windows, the compile-time path is the Windows directory. The > ; path in which the php.ini file is looked for can be overriden using > ; the -c argument in command line mode. > ; > ; The syntax of the file is extremely simple. Whitespace and Lines > ; beginning with a semicolon are silently ignored (as you probably guessed). > ; Section headers (e.g. [Foo]) are also silently ignored, even though > ; they might mean something in the future. > ; > ; Directives are specified using the following syntax: > ; directive = value > ; Directive names are *case sensitive* - foo=bar is different from FOO=bar. > ; > ; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one > ; of the INI constants (On, Off, True, False, Yes, No and None) or an expression > ; (e.g. E_ALL & ~E_NOTICE), or a quoted string ("foo"). > ; > ; Expressions in the INI file are limited to bitwise operators and parentheses: > ; | bitwise OR > ; & bitwise AND > ; ~ bitwise NOT > ; > ; Boolean flags can be turned on using the values 1, On, True or Yes. > ; They can be turned off using the values 0, Off, False or No. > ; > ; An empty string can be denoted by simply not writing anything after the equal > ; sign, or by using the None keyword: > ; > ; foo = ; sets foo to an empty string > ; foo = none ; sets foo to an empty string > ; foo = "none" ; sets foo to the string 'none' > ; > ; If you use constants in your value, and these constants belong to a dynamically > ; loaded extension (either a PHP extension or a Zend extension), you may only > ; use these constants *after* the line that loads the extension. > ; > ; All the values in the php.ini-dist file correspond to the builtin > ; defaults (that is, if no php.ini is used, or if you delete these lines, > ; the builtin defaults will be identical). > > > ;;;;;;;;;;;;;;;;;;;; > ; Language Options ; > ;;;;;;;;;;;;;;;;;;;; > > engine = On ; Enable the PHP scripting language engine under Apache > short_open_tag = On ; allow the <? tag. otherwise, only <?php and <script> tags > are recognized. > asp_tags = Off ; allow ASP-style <% %> tags > precision = 14 ; number of significant digits displayed in floating point numbers > y2k_compliance = Off ; whether to be year 2000 compliant (will cause problems with non y2k > compliant browsers) > output_buffering= Off ; Output buffering allows you to send header lines (including cookies) > ; even after you send body content, in the price of slowing PHP's > ; output layer a bit. > ; You can enable output buffering by in runtime by calling the output > ; buffering functions, or enable output buffering for all files > ; by setting this directive to On. > implicit_flush = Off ; Implicit flush tells PHP to tell the output layer to flush itself > ; automatically after every output block. This is equivalent to > ; calling the PHP function flush() after each and every call to print() > ; or echo() and each and every HTML block. > ; Turning this option on has serious performance implications, and > ; is generally recommended for debugging purposes only. > allow_call_time_pass_reference = On ; whether to enable the ability to force arguments to be > ; passed by reference at function-call time. This method > ; is deprecated, and is likely to be unsupported in future > ; versions of PHP/Zend. The encouraged method of specifying > ; which arguments should be passed by reference is in the > ; function declaration. You're encouraged to try and > ; turn this option Off, and make sure your scripts work > ; properly with it, to ensure they will work with future > ; versions of the language (you will receive a warning > ; each time you use this feature, and the argument will > ; be passed by value instead of by reference). > > ; Safe Mode > safe_mode = Off > safe_mode_exec_dir = > safe_mode_allowed_env_vars = PHP_ ; Setting certain environment variables > ; may be a potential security breach. > ; This directive contains a comma-delimited > ; list of prefixes. In Safe Mode, the > ; user may only alter environment > ; variables whose names begin with the > ; prefixes supplied here. > ; By default, users will only be able > ; to set environment variables that begin > ; with PHP_ (e.g. PHP_FOO=BAR). > ; Note: If this directive is empty, PHP > ; will let the user modify ANY environment > ; variable! > safe_mode_protected_env_vars = LD_LIBRARY_PATH ; This directive contains a comma- > ; delimited list of environment variables, > ; that the end user won't be able to > ; change using putenv(). > ; These variables will be protected > ; even if safe_mode_allowed_env_vars is > ; set to allow to change them. > > ; Colors for Syntax Highlighting mode. Anything that's acceptable in <font > color=???> would work. > highlight.string = #DD0000 > highlight.comment = #FF8000 > highlight.keyword = #007700 > highlight.bg = #FFFFFF > highlight.default = #0000BB > highlight.html = #000000 > > ; Misc > expose_php = On ; Decides whether PHP may expose the fact that it is installed on the > ; server (e.g., by adding its signature to the Web server header). > ; It is no security threat in any way, but it makes it possible > ; to determine whether you use PHP on your server or not. > > > > ;;;;;;;;;;;;;;;;;;; > ; Resource Limits ; > ;;;;;;;;;;;;;;;;;;; > > max_execution_time = 30 ; Maximum execution time of each script, in seconds (UNIX only) > memory_limit = 8388608 ; Maximum amount of memory a script may consume (8MB) > > > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > ; Error handling and logging ; > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > ; error_reporting is a bit-field. Or each number up to get desired error reporting level > ; E_ALL - All errors and warnings > ; E_ERROR - fatal run-time errors > ; E_WARNING - run-time warnings (non fatal errors) > ; E_PARSE - compile-time parse errors > ; E_NOTICE - run-time notices (these are warnings which often result from a bug in > ; your code, but it's possible that it was intentional (e.g., using an > ; uninitialized variable and relying on the fact it's automatically > ; initialized to an empty string) > ; E_CORE_ERROR - fatal errors that occur during PHP's initial startup > ; E_CORE_WARNING - warnings (non fatal errors) that occur during PHP's initial startup > ; E_COMPILE_ERROR - fatal compile-time errors > ; E_COMPILE_WARNING - compile-time warnings (non fatal errors) > ; E_USER_ERROR - user-generated error message > ; E_USER_WARNING - user-generated warning message > ; E_USER_NOTICE - user-generated notice message > ; Examples: > ; error_reporting = E_ALL & ~E_NOTICE ; show all errors, except for notices > ; error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ; show only errors > error_reporting = E_ALL & ~E_NOTICE ; Show all errors except for notices > display_errors = On ; Print out errors (as a part of the HTML script) > log_errors = Off ; Log errors into a log file (server-specific log, stderr, or error_log > (below)) > track_errors = Off ; Store the last error/warning message in $php_errormsg (boolean) > ;error_prepend_string = "<font color=ff0000>" ; string to output before an > error message > ;error_append_string = "</font>" ; string to output after an > error message > error_log = d:\inetpub\php\log\php_err.log ; log errors to specified file > ;error_log = syslog ; log errors to syslog (Event Log on NT, not valid in Windows 95) > warn_plus_overloading = Off ; warn if the + operator is used with strings > > > ;;;;;;;;;;;;;;;;; > ; Data Handling ; > ;;;;;;;;;;;;;;;;; > variables_order = "EGPCS" ; This directive describes the order in which PHP > registers > ; GET, POST, Cookie, Environment and Built-in variables (G, P, > ; C, E & S respectively, often referred to as EGPCS or GPC). > ; Registration is done from left to right, newer values override > ; older values. > register_globals = On ; Whether or not to register the EGPCS variables as global > ; variables. You may want to turn this off if you don't want > ; to clutter your scripts' global scope with user data. This makes > ; most sense when coupled with track_vars - in which case you can > ; access all of the GPC variables through the $HTTP_*_VARS[], > ; variables. > register_argc_argv = off ; This directive tells PHP whether to declare the argv&argc > ; variables (that would contain the GET information). If you > ; don't use these variables, you should turn it off for > ; increased performance > track_vars = On ; enable the $HTTP_*_VARS[] arrays, where * is one of > ; ENV, POST, GET, COOKIE or SERVER. > gpc_order = "GPC" ; This directive is deprecated. Use variables_order instead. > > ; Magic quotes > magic_quotes_gpc = On ; magic quotes for incoming GET/POST/Cookie data > magic_quotes_runtime= Off ; magic quotes for runtime-generated data, e.g. data from SQL, from > exec(), etc. > magic_quotes_sybase = Off ; Use Sybase-style magic quotes (escape ' with '' > instead of \') > > ; automatically add files before or after any PHP document > auto_prepend_file = > auto_append_file = > > ; As of 4.0b4, PHP always outputs a character encoding by default in > ; the Content-type: header. To disable sending of the charset, simply > ; set it to be empty. > ; PHP's built-in default is text/html > default_mimetype = "text/html" > ;default_charset = "iso-8859-1" > > ;;;;;;;;;;;;;;;;;;;;;;;;; > ; Paths and Directories ; > ;;;;;;;;;;;;;;;;;;;;;;;;; > include_path = ; UNIX: "/path1:/path2" Windows: > "\path1;\path2" > doc_root = ; the root of the php pages, used only if nonempty > user_dir = ; the directory under which php opens the script using /~username, used only if > nonempty > ;upload_tmp_dir = ; temporary directory for HTTP uploaded files (will use > system default if not specified) > upload_max_filesize = 2097152 ; 2 Meg default limit on file uploads > extension_dir = ./ ; directory in which the loadable extensions (modules) reside > > > ;;;;;;;;;;;;;;;;;;;;;; > ; Dynamic Extensions ; > ;;;;;;;;;;;;;;;;;;;;;; > ; if you wish to have an extension loaded automaticly, use the > ; following syntax: extension=modulename.extension > ; for example, on windows, > ; extension=msql.dll > ; or under UNIX, > ; extension=msql.so > ; Note that it should be the name of the module only, no directory information > ; needs to go here. Specify the location of the extension with the extension_dir directive > above. > > > ;Windows Extensions > ;extension=php_mysql.dll > ;extension=php_nsmail.dll > ;extension=php_calendar.dll > ;extension=php_dbase.dll > ;extension=php_filepro.dll > ;extension=php_gd.dll > ;extension=php_dbm.dll > ;extension=php_mssql.dll > ;extension=php_zlib.dll > ;extension=php_filepro.dll > ;extension=php_imap4r2.dll > ;extension=php_ldap.dll > ;extension=php_crypt.dll > ;extension=php_msql2.dll > ;extension=php_odbc.dll > > ;;;;;;;;;;;;;;;;;;; > ; Module Settings ; > ;;;;;;;;;;;;;;;;;;; > > [Syslog] > define_syslog_variables = Off ; Whether or not to define the various syslog variables, > ; e.g. $LOG_PID, $LOG_CRON, etc. Turning it off is a > ; good idea performance-wise. In runtime, you can define > ; these variables by calling define_syslog_variables() > > > [mail function] > SMTP = localhost ;for win32 only > sendmail_from = me@localhost.com ;for win32 only > ;sendmail_path = ;for unix only, may supply arguments as well (default is sendmail -t) > > [Debugger] > debugger.host = localhost > debugger.port = 7869 > debugger.enabled = False > > [Logging] > ; These configuration directives are used by the example logging mechanism. > ; See examples/README.logging for more explanation. > ;logging.method = db > ;logging.directory = /path/to/log/directory > > ; Local Variables: > ; tab-width: 4 > ; End: > > > > > -- Zeev Suraski <zeev@zend.com> http://www.zend.com/

« previous php.dev (#22639) next »