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

新手上路,请多包涵

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

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

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

原文由 Candidasa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 384
2 个回答

对于语法错误,您需要在 php.ini 中启用错误显示。默认情况下,这些是关闭的,因为您不希望“客户”看到错误消息。 查看 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 来获取所有错误。 更多信息

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

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

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

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

原文由 Darryl Hein 发布,翻译遵循 CC BY-SA 3.0 许可协议

我像这样解决了我的整个 500 问题:

A.检查php.ini参数

  1. php.ini >> error_reporting = E_ALL | E_STRICT
  2. php.ini >> display_errors = On
  3. php.ini >> display_startup_errors = 关闭

B. 更新 IIS 管理器参数

  1. IIS 管理器 >> 错误页面 >> 500 >> 编辑功能设置 >> 详细错误

在这一步中,您会收到 500 个这样的错误,并且没有加载 html。

在此处输入图像描述

  1. IIS 管理器 >> FastCGI 设置 >> php-cgi.exe >> 标准错误模式 >> IgnoreAndReurn200

在这一步中,您可以看到包含这样的 php 错误的 html 页面。 在此处输入图像描述

并做了 :)

原文由 Saghachi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题