dmitry          Fri Jun 15 09:20:53 2007 UTC

  Modified files:              
    /php-src/main       main.c 
  Log:
  HTTP 500 is sent to browser in case of PHP error instead of blank page
  
  
http://cvs.php.net/viewvc.cgi/php-src/main/main.c?r1=1.731&r2=1.732&diff_format=u
Index: php-src/main/main.c
diff -u php-src/main/main.c:1.731 php-src/main/main.c:1.732
--- php-src/main/main.c:1.731   Fri Jun 15 07:32:17 2007
+++ php-src/main/main.c Fri Jun 15 09:20:53 2007
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: main.c,v 1.731 2007/06/15 07:32:17 dmitry Exp $ */
+/* $Id: main.c,v 1.732 2007/06/15 09:20:53 dmitry Exp $ */
 
 /* {{{ includes
  */
@@ -931,17 +931,28 @@
                /* 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 (!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 CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to