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

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

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

还有什么要做?


当前回答

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

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

display_errors = on

display_startup_errors = on

其他回答

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

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

display_errors = on

display_startup_errors = on

如果尽管遵循了以上所有答案(或者您无法编辑php.ini文件),但仍然无法收到错误消息,请尝试创建一个新的php文件来启用错误报告,然后将问题文件包括在内。如:

error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once('problem_file.php');

尽管在php.ini文件中正确设置了所有内容,但这是我唯一能够捕获名称空间错误的方法。我的确切设想是:

//file1.php
namespace a\b;
class x {
    ...
}

//file2.php
namespace c\d;
use c\d\x; //Dies because it's not sure which 'x' class to use
class x {
    ...
}

报告除E_NOTICE之外的所有错误

error_reporting(E_ALL & ~E_NOTICE);

显示所有PHP错误

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

关闭所有错误报告

error_reporting(0);

您无法在运行时启用错误输出的同一文件中捕获解析错误,因为它会在实际执行任何操作之前解析文件(因为在执行过程中遇到错误,所以不会执行任何操作)。您需要更改实际的服务器配置,以便启用display_errors并使用适当的error_reporting级别。如果您没有访问php.ini的权限,则可以使用.htaccess或类似文件,具体取决于服务器。

此问题可能提供其他信息。

要显示所有错误,您需要:

1.在从浏览器(通常是index.PHP)调用的PHP脚本中包含以下行:

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

2.(a)确保此脚本没有语法错误

—or—

2.(b)在php.ini中设置display_errors=打开

否则,它甚至无法运行这两条线!

您可以通过运行(在命令行)检查脚本中的语法错误:

php -l index.php

如果包含另一个PHP脚本中的脚本,那么它将在包含的脚本中显示语法错误。例如:

索引php

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

// Any syntax errors here will result in a blank screen in the browser

include 'my_script.php';

my_script.php

adjfkj // This syntax error will be displayed in the browser