即使启用了所有错误报告,PHP 仍会显示空白页

即使启用了所有错误报告,PHP 仍会显示空白页

我正在尝试调试 Drupal 应用程序中损坏的页面,但很难让 PHP 输出任何有用的信息。我有以下设置:

error_reporting = E_ALL
display_errors = On
display_startup_errors = On
log_errors = On
error_log = /var/log/php/php_error.log

我有一个文件显示 phpinfo(),它确认这些变量针对环境设置正确。我已将 memory_limit 增加到 256M(这应该足够了)。然而,我得到的唯一指示是 apache 访问日志中的状态 500 代码和 PHP 的空白页。

Apache虚拟主机将LogLevel设置为debug,错误日志只输出:

[Sat Jun 16 20:03:03 2012] [debug] mod_deflate.c(615): [client 173.8.175.217] Zlib: Compressed 0 to 2 : URL /index.php, referer: http://ec2-174-129-192-237.compute-1.amazonaws.com/admin/reports/updates
[Sat Jun 16 20:03:03 2012] [error] [client 173.8.175.217] File does not exist: /var/www/favicon.ico
[Sat Jun 16 20:03:03 2012] [debug] mod_deflate.c(615): [client 173.8.175.217] Zlib: Compressed 42 to 44 : URL /favicon.ico

PHP 错误日志什么都没输出。内核和系统日志没有显示与 Apache 或 PHP 相关的任何内容。我还尝试安装 suphp,检查其日志只是确认用户正在正确执行:

[Sat Jun 16 20:02:59 2012] [info] Executing "/var/www/index.php" as UID 1000, GID 1000
[Sat Jun 16 20:05:03 2012] [info] Executing "/var/www/index.php" as UID 1000, GID 1000

这是在 Ubuntu 12.04 x86_64 上,带有以下 PHP 模块:

ii  php5                             5.3.10-1ubuntu3.1          server-side, HTML-embedded scripting language (metapackage)
ii  php5-cgi                         5.3.10-1ubuntu3.1          server-side, HTML-embedded scripting language (CGI binary)
ii  php5-cli                         5.3.10-1ubuntu3.1          command-line interpreter for the php5 scripting language
ii  php5-common                      5.3.10-1ubuntu3.1          Common files for packages built from the php5 source
ii  php5-curl                        5.3.10-1ubuntu3.1          CURL module for php5
ii  php5-gd                          5.3.10-1ubuntu3.1          GD module for php5
ii  php5-mysql                       5.3.10-1ubuntu3.1          MySQL module for php5

那么,我这里遗漏了什么?为什么没有错误报告?

答案1

Drupal 本身会更改错误报告和显示设置,这是在 ini 文件(您的设置所在的文件)处理后发生的。要在 drupal 执行后更改设置,您可以添加

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

到 index.php。

Drupal 很复杂。空白页在 Drupal 社区中被亲切地称为“死亡白屏”(WSOD)。请参阅http://drupal.org/node/158043获取更多故障排除帮助。

相关内容