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

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

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


当前回答

您可能还想尝试使用PHPStorm作为代码编辑器。当您在编辑器中输入时,它会发现许多PHP和其他语法错误。

其他回答

我推荐Nette Tracy来更好地可视化PHP中的错误和异常:

您可以启用完整的错误报告(包括通知和严格消息)。有些人觉得这太啰嗦了,但值得一试。在php.ini中设置error_reporting为E_ALL | E_STRICT。

error_reporting = E_ALL | E_STRICT

E_STRICT将通知您已弃用的函数,并为您提供关于执行某些任务的最佳方法的建议。

如果你不想要通知,但你发现其他消息类型有帮助,尝试排除通知:

error_reporting = (E_ALL | E_STRICT) & ~E_NOTICE

还要确保在php.ini中启用了display_errors。如果您的PHP版本高于5.2.4,请将其设置为On:

display_errors = "On"

如果您的版本是5.2.4或更新版本,请使用:

display_errors = "stderr"

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

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

将未注释的行更改为:

display_errors = stdout

使用@inexistent_function_call ();将导致解释器安静地停止并中止脚本解析。您应该检查无效的函数,并尽量不要使用错误抑制操作符(@ char)

您可以在要调试的文件中包含以下行:

error_reporting(E_ALL);
ini_set('display_errors', '1');

这将覆盖PHP .ini中的默认设置,这只会使PHP向日志报告错误。