我经常会尝试运行PHP脚本,然后得到一个空白屏幕。没有错误信息;只有一个空屏幕。原因可能是一个简单的语法错误(错误的括号,缺少分号),或者函数调用失败,或者完全是其他原因。
很难找出哪里出了问题。我最终注释掉了代码,到处输入“echo”语句,等等,试图缩小问题的范围。但肯定有更好的办法,对吧?
是否有一种方法可以让PHP像Java那样产生有用的错误消息?
我经常会尝试运行PHP脚本,然后得到一个空白屏幕。没有错误信息;只有一个空屏幕。原因可能是一个简单的语法错误(错误的括号,缺少分号),或者函数调用失败,或者完全是其他原因。
很难找出哪里出了问题。我最终注释掉了代码,到处输入“echo”语句,等等,试图缩小问题的范围。但肯定有更好的办法,对吧?
是否有一种方法可以让PHP像Java那样产生有用的错误消息?
当前回答
有一个非常有用的扩展名为“xdebug”,它也会使您的报告更好。
其他回答
您可以在要调试的文件中包含以下行:
error_reporting(E_ALL);
ini_set('display_errors', '1');
这将覆盖PHP .ini中的默认设置,这只会使PHP向日志报告错误。
你也可以像这样在终端(命令行)运行文件:
这将运行您的代码,并为您提供与在error.log中看到的任何错误相同的输出。它提到了错误和行号。
除了上面的许多很好的答案,你还可以在你的项目中实现以下两个功能。它们将在应用程序/脚本退出之前捕捉每个非语法错误。 在函数内部,您可以进行回溯和日志,或向公众呈现令人愉快的“网站正在维护”消息。
致命错误:
register_shutdown_function
http://php.net/manual/en/function.register-shutdown-function.php
错误:
set_error_handler
http://php.net/manual/en/function.set-error-handler.php
回溯:
debug_backtrace
http://php.net/manual/en/function.debug-backtrace.php
我总是在php脚本的最顶部使用这种语法。
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 'On'); //On or Off
error_reporting(E_ALL | E_STRICT);
并在php.ini中打开显示错误