PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2007, PHP 5.2.4
+- HTTP 500 is sent to browser in case of PHP error instead of blank page.
+ (Dmitry, Andrei Nigmatulin)
- Improved fix for MOPB-03-2007. (Ilia)
- Corrected fix for CVE-2007-2872. (Ilia)
- Enabled statement cache for non-persistent OCI8 connections.
/* 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;
}