如何调试 PHP WSOD?

Posted

技术标签:

【中文标题】如何调试 PHP WSOD?【英文标题】:How do I debug a PHP WSOD? 【发布时间】:2011-04-24 03:02:09 【问题描述】:

我偶尔会收到一个令人费解的死机白屏 php 错误 - 即使使用以下设置,也不会显示或记录任何内容:

ini_set("error_reporting",E_ALL); ini_set("display_errors",true); ini_set("log_errors",true); ini_set("display_startup_errors",true); ini_set("html_errors",false); ini_set("error_log","/var/log/php_error_log");

我在某处读到输出缓冲或内存限制错误可能导致没有错误输出,但之前(例如)我发现 WSOD 仅仅是由 __autoload() 查找丢失的类文件引起的。

有没有人找到让这些错误可见的方法?我讨厌注释掉代码块。

谢谢

【问题讨论】:

除非依赖于应用程序,否则不要将设置专门添加到您的应用程序中,您应该修改 php.ini 文件并重新启动您的 Web 服务器,因为很多时候它不会覆盖 ini。跨度> 【参考方案1】:

我最近遇到了类似的问题,结果发现我使用的软件包覆盖了日志记录设置,因此在某些情况下我永远看不到日志。因为您将设置放在 ini 文件中,我猜您使用的是 php.ini,所以有很多机会接近代码运行的地方正在更改设置。

我的建议是将error_reporting(E_ALL | E_STRICT); 放入导致问题的文件中,看看是否会有所改善。

【讨论】:

以上是关于如何调试 PHP WSOD?的主要内容,如果未能解决你的问题,请参考以下文章

我的网站上有关白屏死机 (WSOD) 的问题

大型 HTML 显示空白页面(WSOD - 白屏死机) - PHP

如何在laravel 4显示错误

xampp + eclipse 环境下如何调试PHP

如何使用FireFox插件FirePHP调试PHP

在所有管理页面上获取 WSOD