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

标签 php debugging error-handling

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

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

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

最佳答案

默认情况下,显示错误是关闭的,因为您不希望“客户”看到错误消息。

Check this page在 PHP 文档中获取有关 2 个指令的信息:error_reportingdisplay_errorsdisplay_errors 可能是您要更改的那个。

所以你有 3 个选择:

(1) 您可以检查错误日志文件,因为它包含所有错误(除非已禁用日志记录)。要启用错误日志记录,请确保将 log_errors 配置指令设置为 On。当错误不是在 PHP 中发生而是由网络服务器发出时,日志也很有用。

(2) 您可以添加以下两行,这将帮助您调试在同一文件中发生的非语法错误的错误:

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

请注意,在实时服务器上,后者应设置为 Off(但仅限于后者,因为您仍然需要从日志文件中了解发生的所有错误)。

但是,对于同一文件中发生的语法错误,上述命令将不起作用,您需要在 php.ini 中启用它们。如果您不能修改 php.ini,您也可以尝试将以下行添加到 .htaccess 文件中,尽管现在很少支持它:

php_flag  display_errors        on
php_value error_reporting       -1

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

关于php - 如何在 PHP 中获取有用的错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24834816/

相关文章:

php - 是什么导致 CPU 负载如此之高(来自 MySQL)?

java - 如何检测 Swing 线程策略违规

php - 在 PHP 中使用 file_get_contents 时访问 $_SESSION

javascript - 无法在 javascript 数组中提醒响应

perl - 让 perl 调试器不会在第一条语句处停止

php - 警告: odbc_fetch_row(): 4 is not a valid ODBC result错误

perl - CORE Perl 中的哪些内容在成功时设置了 ERRNO ($!)?

perl - 为应用程序设计错误消息系统的最具可扩展性/可扩展性的方法是什么?我将使用 Perl。

javascript - 没有JQUERY的使用AJAX发送表单数据的POST方法

java - 无法检索 'this' 的正确封闭实例