未记录Apache2内部服务器错误


Apache2 internal server error not being logged

我正在用Laravel框架进行一些web开发,我已经设置了jQuery,它可以在点击按钮时向PHP文件发送请求,然后将结果返回给我的jQuery。

但是,每次单击此按钮时,我都会收到"内部服务器错误"。这不是问题所在;相反,错误是我的Apache错误日志没有提到这个500内部服务器错误。事实上,除了[notice] caught SIGTERM, shutting down[notice] Apache/2.2.22 (Debian) PHP/5.4.4-14+deb7u12 configured -- resuming normal operations之外,它并没有真正记录任何内容。话虽如此,我的access.log显示了正在发生的内部服务器错误:

"POST /testing/public/apps/devicecheckout-checkoutdevices HTTP/1.1" 500 833 "http://xxx.xxx.xxx.xxx/testing/public/apps/devicecheckout-checkoutdevices" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"

在php.ini文件中,我有error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICTlog_errors = On

我该如何解决这个问题?

您的脚本会导致带有PHP模块的apache进程崩溃,因此它不会尝试向日志中写入任何内容,而父进程是记录它所知道的一切的进程:它的子进程捕获了SIGTERM。

我通过将die("here")放在不同的位置来确定崩溃发生的位置,并深入研究代码和所有使用的库和框架,从而解决了这个问题。然后用你的罐子想办法做什么。

我注意到有一件事经常导致这种情况,那就是print_r()是一个具有循环引用的复杂对象。