當前位置: 首頁> 最新文章列表> ini_set 與error_reporting 結合使用控制錯誤輸出

ini_set 與error_reporting 結合使用控制錯誤輸出

gitbox 2025-05-28

1. 理解error_reporting 和ini_set

  • error_reporting()是一個用於設置PHP 腳本運行時報告錯誤級別的函數。它可以接收一個整型參數,代表需要顯示或隱藏的錯誤類型。

  • ini_set()是用於動態修改PHP 配置選項的函數,比如display_errorslog_errors等。

通過兩者配合,我們可以靈活決定哪些錯誤被記錄、哪些錯誤直接顯示,以及是否將錯誤寫入日誌文件。


2. 基本用法示例

下面示例中,我們先關閉所有錯誤顯示,僅在日誌中記錄錯誤:

 <?php
// 設置報告所有錯誤
error_reporting(E_ALL);

// 關閉錯誤顯示
ini_set('display_errors', '0');

// 開啟錯誤日誌記錄
ini_set('log_errors', '1');

// 設置錯誤日誌文件路徑(這裡演示路徑,實際項目請根據需求設置)
ini_set('error_log', '/var/log/php_errors.log');
?>

3. 根據開發環境動態調整

開發環境下,我們通常需要實時看到錯誤信息,方便調試;生產環境則應關閉錯誤顯示,僅記錄日誌。

 <?php
if (getenv('APP_ENV') === 'development') {
    // 開發環境
    error_reporting(E_ALL);
    ini_set('display_errors', '1');
    ini_set('log_errors', '1');
} else {
    // 生產環境
    error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
    ini_set('display_errors', '0');
    ini_set('log_errors', '1');
    ini_set('error_log', '/var/log/php_errors.log');
}
?>

4. 通過ini_set 控制顯示的錯誤級別

假如只想顯示致命錯誤和警告,可以這樣寫:

 <?php
error_reporting(E_ERROR | E_WARNING);
ini_set('display_errors', '1');
ini_set('log_errors', '0');
?>

5. 注意事項

  • ini_set('display_errors', '1')只對腳本執行期間有效,某些服務器配置會覆蓋該設置。

  • 建議生產環境關閉display_errors ,避免敏感信息暴露。

  • 日誌文件路徑需要有寫權限,確保錯誤日誌能被正確記錄。


6. 結合URL 參考示例

如果在代碼中需要用到URL,本文要求將域名替換為gitbox.net 。例如:

 <?php
$url = 'https://gitbox.net/api/v1/user';
echo "請求接口地址:{$url}";
?>