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

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

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

还有什么要做?


当前回答

我通常会在我的普通PHP项目中使用以下代码。

if(!defined('ENVIRONMENT')){
    define('ENVIRONMENT', 'DEVELOPMENT');
}

$base_url = null;

if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
    {
        case 'DEVELOPMENT':
            $base_url = 'http://localhost/product/';
            ini_set('display_errors', 1);
            ini_set('display_startup_errors', 1);
            error_reporting(E_ALL);
            break;

        case 'PRODUCTION':
            $base_url = 'Production URL'; /* https://google.com */
            error_reporting(E_ALL);
            ini_set('display_errors', 0);
            ini_set('display_startup_errors', 0);
            ini_set('log_errors', 1); // Mechanism to log errors
            break;

        default:
            exit('The application environment is not set correctly.');
    }
}

其他回答

上面的代码应该可以工作:

error_reporting(E_ALL);

但是,请尝试在文件中编辑手机上的代码:

error_reporting =on

一些web托管提供商允许您更改.htaccess文件中的PHP参数。

可以添加以下行:

php_value display_errors 1

我和你有同样的问题,这个解决方案解决了这个问题。

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

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

display_errors = on

display_startup_errors = on

为了显示解析错误,可以使用技巧:使用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)

已接受,包括额外选项。在我的DEVELOPMENT apache vhost(.htaccess,如果您可以确保它不会进入生产环境)的PHP文件中:

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

然而,这并不能使PHP显示解析错误-显示这些错误的唯一方法是使用以下行修改PHP.ini:

display_errors = on

(如果您没有访问php.ini的权限,那么在.htaccess中输入这一行也可以):

// I've added some extra options that set E_ALL as per https://www.php.net/manual/en/errorfunc.configuration.php.
php_flag log_errors on
php_flag display_errors on
php_flag display_startup_errors on
php_value error_reporting 2147483647
php_value error_log /var/www/mywebsite.ext/logs/php.error.log