php - 如何在 PHP 中获得有用的错误消息?

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

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

有没有办法让 PHP 产生有用的错误消息,就像 Java 一样?

最佳答案

对于语法错误,您需要在 php.ini 中启用错误显示。默认情况下,这些是关闭的,因为您不希望“客户”看到错误消息。 Check this page在 PHP 文档中获取有关 2 个指令的信息:error_reportingdisplay_errorsdisplay_errors 可能是您要更改的那个。如果无法修改 php.ini,还可以在 .htaccess 文件中添加以下行:

php_flag  display_errors        on
php_value error_reporting       2039

您可能需要考虑为您的 PHP 版本使用 E_ALL 的值(如 Gumbo 所述),以便 error_reporting 获取所有错误。 more info

其他 3 项: (1) 您可以检查错误日志文件,因为它将包含所有错误(除非日志记录已被禁用)。 (2) 添加以下2行将帮助您调试不是语法错误的错误:

error_reporting(-1);
ini_set('display_errors', 'On');

(3) 另一种选择是使用编辑器在您键入时检查错误,例如 PhpEd . PhpEd 还带有一个调试器,可以提供更详细的信息。 (PhpEd 调试器与 xdebug 非常相似,直接集成到编辑器中,因此您只需 1 个程序即可完成所有操作。)

卡特曼的 link也很好:http://www.ibm.com/developerworks/library/os-debug/

https://stackoverflow.com/questions/845021/

相关文章:

php - 更改最大上传文件大小

php - 新 self 与新静态

php - 是否有将 PHP 数组复制到另一个数组的功能?

php - PHP 中的 HTTP_HOST 和 SERVER_NAME 有什么区别?

php - htmlentities() 与 htmlspecialchars()

php - 如何捕获 PHP 致命 (`E_ERROR` ) 错误?

php - 可以使用 PHP 短标签吗?

php - 按一个属性对对象数组进行排序

php - PHP中@符号的用途是什么?

php - 我可以将数组绑定(bind)到 PDO 查询中的 IN() 条件吗?