首頁  >  問答  >  主體

如何在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粉328911308380 天前505

全部回覆(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設定檔並重新啟動您的網路伺服器以使變更生效。 透過這些更改,Yii2將將PHP警告記錄到指定的日誌檔案中,同時允許程式碼的執行繼續進行。您可以查看日誌檔案(php_warnings.log)以收集和處理PHP警告。

    回覆
    0
  • 取消回覆