搜索

首页  >  问答  >  正文

获取PHP中有用的错误信息的方法

<p>很多时候,我会尝试运行一个PHP脚本,但只会得到一个空白屏幕。没有错误信息,只有一个空白的屏幕。原因可能是一个简单的语法错误(错误的括号,缺少分号),或者是一个失败的函数调用,或者完全是其他什么原因。</p> <p>很难弄清楚出了什么问题。我最后只能注释掉代码,到处添加"echo"语句,等等,试图缩小问题的范围。但肯定有更好的方法,对吗?</p> <p>有没有办法让PHP生成一个像Java那样有用的错误信息?</p>
P粉590929392P粉590929392502 天前603

全部回复(2)我来回复

  • P粉608647033

    P粉6086470332023-08-21 13:56:06

    以下代码启用所有错误:

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

    还可以参考以下链接:

    回复
    0
  • P粉817354783

    P粉8173547832023-08-21 00:11:04

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

    请查看PHP文档中的此页面,了解有关两个指令的信息:error_reportingdisplay_errors。您可能想更改的是display_errors

    所以您有3个选项:

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

    (2) 您可以添加以下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非常相似,并直接集成到编辑器中,因此您可以使用一个程序完成所有操作。)

    回复
    0
  • 取消回复