我经常会尝试运行PHP脚本,然后得到一个空白屏幕。没有错误信息;只有一个空屏幕。原因可能是一个简单的语法错误(错误的括号,缺少分号),或者函数调用失败,或者完全是其他原因。

很难找出哪里出了问题。我最终注释掉了代码,到处输入“echo”语句,等等,试图缩小问题的范围。但肯定有更好的办法,对吧?

是否有一种方法可以让PHP像Java那样产生有用的错误消息?


当前回答

如果错误是在PHP代码中,您可以在代码中使用error_reporting()函数来设置为报告所有。

但是,这并不能处理PHP崩溃的情况。这方面的信息只能在服务器日志中找到。也许你无法访问这些,但我合作过的许多托管提供商都有某种方式让你访问它。例如,我最喜欢的方法是在.php所在的当前目录中创建error_log文件。尝试在那里搜索或联系您的主机提供商。

其他回答

要打开完整的错误报告,请在脚本中添加以下内容:

error_reporting(E_ALL);

这甚至会导致出现最小的警告。还有,以防万一:

ini_set('display_errors', '1');

将强制显示错误。这应该在生产服务器中关闭,但在开发时不可以。

一些应用程序确实自己处理这些指令,通过调用这样的命令:

error_reporting(E_ALL & ~E_DEPRECATED); or error_reporting(0);

从而覆盖你的。htaccess设置。

error_reporting(E_ALL | E_STRICT);

并在php.ini中打开显示错误

要持久保存并使其符合要求,可以编辑php.ini文件。它通常存储在/etc/php.ini或/etc/php/php.ini中,但更多的本地php.ini可能会覆盖它,这取决于主机提供商的设置指南。检查phpinfo()文件顶部的已加载配置文件,以确保最后加载哪个文件。

在该文件中搜索display_errors。应该只有3个实例,其中2个是注释的。

将未注释的行更改为:

display_errors = stdout

你确定PHP实际上是从。htaccess中获取'display_errors'设置吗?检查phpinfo()函数的输出以确定。

此外,你应该检查以确保你没有使用'@',如果你使用了'@include…'或'@some_function(…)',在堆栈跟踪的某处。