搜索

首页  >  问答  >  正文

如何在Yii2中记录“已弃用警告”而不将其显示

<p>为了从PHP 8.0切换到8.1,我遇到了很多PHP <em>Deprecated Warnings</em>的显示。我可以简单地关闭它们,但最好是为了PHP 8.2修复它们,所以我尝试在我的应用程序在PHP 8.1中运行时获取这些警告的静默记录器。我需要在Yii 2和PHP中做哪些设置?这可行吗?</p> <p>当我设置PHP为<code>error_reporting( E_ALL );</code>时,Yii 2应用程序会显示错误。这不是“静默”的方式。</p> <p>Yii2配置:文件<em>main.php</em></p> <pre class="brush:php;toolbar:false;">'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ],</pre> <p>我如何只记录这些PHP警告而不停止代码运行?</p>
P粉328911308P粉328911308490 天前587

全部回复(1)我来回复

  • P粉546179835

    P粉5461798352023-09-06 00:08:27

    试试这个:

    'log' => [
        'traceLevel' => YII_DEBUG ? 3 : 0,
        'targets' => [
            [
                'class' => 'yii\log\FileTarget',
                'categories' => ['yii\base\*'],
                'levels' => ['error', 'warning','deprecated'],
                'logFile' => '@runtime/logs/php_warnings.log',
            ],
    ],

    现在,PHP警告将被记录,而不会停止代码的执行。然而,为了实现完全“无声”记录PHP警告的方式,您需要调整PHP错误报告的设置。

    打开您的PHP配置文件(php.ini)。

    找到error_reporting指令并修改它以包括E_WARNING。例如:

    error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE | E_WARNING

    通过包括E_WARNING,您确保记录PHP警告,但其他类型的错误不会记录。

    保存PHP配置文件并重新启动您的Web服务器以使更改生效。 通过这些更改,Yii2将将PHP警告记录到指定的日志文件中,同时允许代码的执行继续进行。您可以查看日志文件(php_warnings.log)以收集和处理PHP警告。

    回复
    0
  • 取消回复