我检查了我的PHP ini文件(PHP.ini),并设置了display_errors,错误报告也是E_ALL。我已重新启动Apache Web服务器。

我甚至把这些行放在了脚本的顶部,它甚至不能捕捉到简单的解析错误。例如,我用“$”声明变量,而不关闭语句“;”。但我的所有脚本都显示了这些错误的空白页面,但我希望在浏览器输出中看到这些错误。

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

还有什么要做?


当前回答

报告除E_NOTICE之外的所有错误

error_reporting(E_ALL & ~E_NOTICE);

显示所有PHP错误

error_reporting(E_ALL);  or ini_set('error_reporting', E_ALL);

关闭所有错误报告

error_reporting(0);

其他回答

在php文件所在的文件夹中创建一个名为php.ini的文件。

在php.ini中添加以下代码(我给出了一个显示代码的简单错误):

display_errors = on

display_startup_errors = on

如果您正在执行SharedHosting计划(如hostgator)。。。简单地添加

php_flag display_errors 1

插入.htaccess文件并将其上载到远程文件夹可能不会产生服务器上生成的实际警告/错误。

您还需要编辑php.ini

这是通过cPanel(在hostgator共享主机上测试)实现的计划)

登录cPanel后,搜索MultiPHP INI编辑器。它通常位于cPanel项目列表中的“软件”部分。

在MultiPHP INI编辑器页面上。。。您可以停留在基本模式选项卡上,只需选中行中显示displayerrors的按钮。然后单击应用按钮保存。

重要事项:只需记住在完成调试时将其关闭;因为这不建议用于公共服务器。

警告:以下答案事实上不正确。错误处理中没有任何更改,未捕获的异常与其他错误一样显示。建议的方法必须谨慎使用,因为它无条件地输出错误,尽管设置了display_error,并且可能会通过向现场的局外人透露敏感信息而构成威胁。

您可能会发现“错误报告”或“显示错误”的所有设置在PHP7中似乎都不起作用。这是因为错误处理已更改。请尝试以下操作:

try{
     // Your code
} 
catch(Error $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}

或者,要一次性捕获异常和错误(这与PHP5不向后兼容):

try{
     // Your code
} 
catch(Throwable $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}

报告除E_NOTICE之外的所有错误

error_reporting(E_ALL & ~E_NOTICE);

显示所有PHP错误

error_reporting(E_ALL);  or ini_set('error_reporting', E_ALL);

关闭所有错误报告

error_reporting(0);

为了显示解析错误,可以使用技巧:使用include,而不是在php.ini中设置display_errors。

以下是三段代码:

文件:tst1.php

<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
// Missing " and ;
echo "Testing

当直接运行此文件时,如果php.ini中将display_errors设置为0,它将不显示任何内容。

现在,试试这个:

文件:tst2.php

<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
include ("tst3.php");

文件:tst3.php

<?php
// Missing " and ;
echo "Testing

现在运行设置错误报告的tst2.php,然后包含tst3。您将看到:

分析错误:语法错误,意外的文件结尾,第4行tst3.php中需要变量(T_variable)或${(T_DOLLAR_OPEN_CURLY_BRACES)或{$(T_CURLY_OPEN)