What is so hard to understand in word 'FATAL'? If your script doesn't work, what use is it to make it show the cryptic 500 error?? I'm -100000 for adding anything like this, even if and even more then if it's optional.
Just forget this. --Jani On Thu, 21 Nov 2002, John Coggeshall wrote: > >Okay... > >Well, even though I've yet to convince Derick and a few others... I did >see enough interest in this to create a patch. This creates two new >directives: error_redirect (bool) which turns this on/off, and >error_redirect_url (string) which is the URL to redirect to upon error. >In order for these directives to have any effect, the headers (of >course) must not have been already sent. This means that either output >buffering must be enabled, or the script never got around to outputting >anything. This patch will allow users to handle every error PHP >generates if desired (including E_PARSE, etc). > >The URL which is redirected to is passed the following parameters via a >GET statement: > >errno - The error number (i.e. E_PARSE, whatever) >Errfile - The path/file of the effected file >Errline - The line which the error occurred >Errmsg - The message provided describing the error: > >If the redirection fails (i.e. because headers had already been sent, >whatever) the standard PHP error routine is used. > >Disclaimer: This is totally meant to be RFC at this point. It works, but >Its not very friendly right now with the other error stuff (i.e. >error_prepend, etc). If I can get a +1 on this concept, I'll clean >things up before I commit. > >John > >--- php4/main/main.org.c Thu Nov 21 05:43:05 2002 >+++ php4/main/main.c Thu Nov 21 05:43:18 2002 >@@ -236,6 +236,8 @@ > STD_PHP_INI_ENTRY("docref_root", "http://www.php.net/", >PHP_INI_ALL, OnUpdateString, docref_root, >php_core_globals, core_globals) > STD_PHP_INI_ENTRY("docref_ext", "", >PHP_INI_ALL, OnUpdateString, docref_ext, >php_core_globals, core_globals) > STD_PHP_INI_BOOLEAN("html_errors", "1", >PHP_INI_ALL, OnUpdateBool, html_errors, >php_core_globals, core_globals) >+ STD_PHP_INI_BOOLEAN("error_redirect", "0", >PHP_INI_SYSTEM, OnUpdateBool, error_redirect, >php_core_globals, core_globals) > >+ STD_PHP_INI_ENTRY("error_redirect_url", NULL, >PHP_INI_SYSTEM, OnUpdateString, >error_redirect_url, php_core_globals, core_globals) > STD_PHP_INI_BOOLEAN("xmlrpc_errors", "0", >PHP_INI_SYSTEM, OnUpdateBool, xmlrpc_errors, >php_core_globals, core_globals) > STD_PHP_INI_ENTRY("xmlrpc_error_number", "0", >PHP_INI_ALL, OnUpdateInt, >xmlrpc_error_number, php_core_globals, core_globals) > STD_PHP_INI_ENTRY("max_input_time", "-1", >PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateInt, >max_input_time,php_core_globals, core_globals) >@@ -605,7 +607,40 @@ > if (prepend_string) { > PUTS(prepend_string); > } >- php_printf(error_format, error_type_str, buffer, >error_filename, error_lineno); >+ if(PG(error_redirect) && !SG(headers_sent)) { >+ >+ sapi_header_line ctr = {0}; >+ char *url_params; >+ >+ int out_url_len, t_header_len; >+ >+ url_params = do_alloca(ERRORURL_BUF_LEN); >+ >+ snprintf(url_params, >+ ERRORURL_BUF_LEN-1, >+ >"?errno=%d&errfile=%s&errline=%d&errmsg=%s", >+ type, >+ php_url_encode((char >*)error_filename, strlen(error_filename), NULL), >+ error_lineno, >+ php_url_encode(buffer, >strlen(buffer), NULL)); >+ >+ /* The +10 is to account for "Location: " >*/ >+ t_header_len = >strlen(PG(error_redirect_url)) + strlen(url_params) + 10; >+ ctr.line = do_alloca(t_header_len); >+ snprintf(ctr.line, >t_header_len+9,"Location: %s%s", PG(error_redirect_url), url_params); >+ >+ ctr.line_len = strlen(ctr.line); >+ >+ sapi_header_op(SAPI_HEADER_REPLACE, &ctr >TSRMLS_CC); >+ >+ free_alloca(url_params); >+ free_alloca(ctr.line); >+ >+ } else { >+ >+ php_printf(error_format, error_type_str, >buffer, error_filename, error_lineno); >+ } >+ > if (PG(xmlrpc_errors)) { > free_alloca(error_format); > } > > > -- <- For Sale! -> -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php