Oh, sorry. The patch was filtered :)
I am sendig it again.

It is sapi independent.

Thanks. Dmitry.

> -----Original Message-----
> From: Uwe Schindler [mailto:[EMAIL PROTECTED] 
> Sent: Wednesday, June 13, 2007 9:08 PM
> To: 'Dmitry Stogov'; [EMAIL PROTECTED]
> Cc: 'internals Mailing List'; 'Stanislav Malyshev'; 'Andrei 
> Nigmatulin'
> Subject: RE: [PHP-DEV] FW: php fastcgi
> 
> 
> Where is the propsed patch? I was thinking about a (not SAPI 
> specific the subject indicates!!!!) modification to the 
> php-output parts that sends a HTTP status "500" when a fatal 
> error occurs and no output was yet send (SAPI did not start 
> the response). I think there is no need for a configuration 
> setting. A CGI program that crashes on startup creates error 
> 500, a servlet/JSP that does not startup creates error 
> 500,... In principle SAPI should return a FAILURE to the 
> webserver from the handler function and set the status code 
> before. The webserver then generates the default error page.
> 
> 
> -----
> Uwe Schindler
> [EMAIL PROTECTED] - http://www.php.net
> NSAPI SAPI developer
> Bremen, Germany
> 
> > -----Original Message-----
> > From: Dmitry Stogov [mailto:[EMAIL PROTECTED]
> > Sent: Wednesday, June 13, 2007 6:54 PM
> > To: [EMAIL PROTECTED]
> > Cc: 'internals Mailing List'; 'Stanislav Malyshev'; 'Andrei 
> > Nigmatulin'
> > Subject: RE: [PHP-DEV] FW: php fastcgi
> > 
> > Configuaratin option make sense, but PHP already has too many 
> > configuration options especialliy for error reprting.
> > I would like to avoid new ones.
> > 
> > Thanks. Dmitry.
> > 
> > > -----Original Message-----
> > > From: Richard Lynch [mailto:[EMAIL PROTECTED]
> > > Sent: Wednesday, June 13, 2007 8:17 PM
> > > To: Dmitry Stogov
> > > Cc: 'internals Mailing List'; Stanislav Malyshev; Andrei 
> Nigmatulin
> > > Subject: Re: [PHP-DEV] FW: php fastcgi
> > >
> > >
> > > On Wed, June 13, 2007 2:07 am, Dmitry Stogov wrote:
> > > > Current time most PHP instalations use setting
> > > 'display_error=0'. This
> > > > setting hides errors from user but may send to him just a
> > > blank page.
> > > >
> > > > The proposed patch sends HTTP 500 response on errors
> > > instead of blank
> > > > pages. The pages that already wrote something are not affectd.
> > > >
> > > > Any objections or additions?
> > >
> > > This sounds perfectly reasonable...
> > >
> > > But I suspect some users might prefer a 404 or a customizable 
> > > response of some type...
> > >
> > > At the risk of incurring the wrath of list members, perhaps yet 
> > > another php.ini configuration switch could be considered?...
> > >
> > > I wouldn't hold up the 500 patch for long with this kind of 
> > > discussion, but it's worth taking a few minutes to consider, I 
> > > think.
> > >
> > > --
> > > Some people have a "gift" link here.
> > > Know what I want?
> > > I want you to buy a CD from some indie artist. 
> > > http://cdbaby.com/browse/from/lynch
> > > Yeah, I get a buck. So?
> > >
> > 
> > --
> > PHP Internals - PHP Runtime Development Mailing List
> > To unsubscribe, visit: http://www.php.net/unsub.php
> 
> -- 
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
Index: main/main.c
===================================================================
RCS file: /repository/php-src/main/main.c,v
retrieving revision 1.640.2.23.2.35
diff -u -p -d -r1.640.2.23.2.35 main.c
--- main/main.c 18 Apr 2007 09:38:56 -0000      1.640.2.23.2.35
+++ main/main.c 21 May 2007 10:39:01 -0000
@@ -834,17 +834,29 @@ static void php_error_cb(int type, const
                /* no break - intentionally */
                case E_ERROR:
                case E_RECOVERABLE_ERROR:
-               /* case E_PARSE: the parser would return 1 (failure), we can 
bail out nicely */
+               case E_PARSE:
                case E_COMPILE_ERROR:
                case E_USER_ERROR:
                        EG(exit_status) = 255;
                        if (module_initialized) {
-                               /* restore memory limit */
-                               zend_set_memory_limit(PG(memory_limit));
-                               efree(buffer);
-                               
zend_objects_store_mark_destructed(&EG(objects_store) TSRMLS_CC);
-                               zend_bailout();
-                               return;
+                               if (!PG(display_errors) &&
+                                   !SG(headers_sent) &&
+                                   SG(sapi_headers).http_response_code == 200) 
{
+                                       sapi_header_line ctr = {0};
+       
+                                       ctr.line = "HTTP/1.0 500 Internal 
Server Error";
+                                       ctr.line_len = strlen(ctr.line);
+                                       sapi_header_op(SAPI_HEADER_REPLACE, 
&ctr TSRMLS_CC);
+                               }
+                               /* the parser would return 1 (failure), we can 
bail out nicely */
+                               if (type != E_PARSE) {
+                                       /* restore memory limit */
+                                       zend_set_memory_limit(PG(memory_limit));
+                                       efree(buffer);
+                                       
zend_objects_store_mark_destructed(&EG(objects_store) TSRMLS_CC);
+                                       zend_bailout();
+                                       return;
+                               }
                        }
                        break;
        }

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to