首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

CodeIgniter 關閉資料庫與 PHP 錯誤顯示完整指南

     編輯:PHP 相關知識

問題情境

CodeIgniter 預設會在瀏覽器顯示詳細的 PHP 與資料庫錯誤訊息,包含 SQL 語法、資料表結構等敏感資訊。上線環境必須關閉錯誤顯示,但單純修改 php.ini 的 display_errors 無法攔截 CI 核心拋出的例外。

方法一:切換環境常數(推薦)

修改專案根目錄 index.php,將 ENVIRONMENT 設為 production:

define('ENVIRONMENT', 'production'); // 預設為 development

if (defined('ENVIRONMENT')) {
    switch (ENVIRONMENT) {
        case 'development':
            error_reporting(E_ALL);
            break;
        case 'testing':
        case 'production':
            error_reporting(0);
            break;
        default:
            exit('The application environment is not set correctly.');
    }
}

此設定會自動關閉所有 PHP 錯誤回報,且 CI 內部的 show_error() 也不會輸出詳細堆疊追蹤。

方法二:關閉資料庫除錯模式

針對「A Database Error Occurred」訊息,需修改 application/config/database.php:

$db['default']['db_debug'] = FALSE;

設為 FALSE 後,資料庫錯誤將不再顯示 SQL 語句與錯誤代碼,僅記錄於日誌(若啟用日誌)。

補充說明

  • 錯誤日誌:關閉顯示不代表停止記錄。確認 config.php 中 $config['log_threshold'] 設定適當等級(如 1 錯誤),並確保 application/logs/ 目錄可寫入。
  • 自訂錯誤頁面:可建立 application/views/errors/html/error_general.php 等視圖,提供友善的使用者提示。
  • 開發與上線分離:建議使用環境變數(如 $_SERVER['CI_ENV'])動態切換 ENVIRONMENT,避免程式碼併入錯誤設定。

驗證方式

  1. 故意製造 SQL 語法錯誤或呼叫不存在的函式。
  2. 確認瀏覽器僅顯示通用錯誤訊息,無堆疊追蹤與 SQL 內容。
  3. 檢查 application/logs/log-YYYY-MM-DD.php 是否記錄詳細錯誤資訊。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved