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

CodeIgniter 核心配置 config.php 完整詳解與最佳實踐

     編輯:PHP 綜合知識

配置檔結構

application/config/config.php 回傳一個 $config 陣列,框架啟動時自動載入。

關鍵配置項詳細說明

基礎 URL 設定

<?php
$config['base_url'] = 'https://www.example.com/'; // 必須以 / 結尾
// 自動偵測(不推薦生產環境)
$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? 'https' : 'http')
    . '://' . $_SERVER['HTTP_HOST']
    . str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);

用途:site_url()、base_url()、表單 action、圖片路徑等所有連結生成基準。

索引頁面與 URL 格式

<?php
$config['index_page'] = ''; // 隱藏 index.php,需配合 .htaccess
// $config['index_page'] = 'index.php'; // 預設

$config['uri_protocol'] = 'REQUEST_URI'; // 推薦:支援 PATH_INFO、QUERY_STRING
// 可選:'PATH_INFO', 'QUERY_STRING', 'REQUEST_URI', 'ORIG_PATH_INFO'

$config['url_suffix'] = '.html'; // 偽靜態後綴,生成 /page.html
// $config['url_suffix'] = ''; // 無後綴

語言與編碼

<?php
$config['language'] = 'english'; // 語系目錄 application/language/english/
$config['charset'] = 'UTF-8';    // 統一專案編碼,資料庫、HTML、PHP 皆設為 UTF-8

安全與防護

<?php
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-'; // URL 允許字元正則,嚴格限制防注入
// $config['permitted_uri_chars'] = ''; // 允許所有(危險!)

$config['enable_hooks'] = true; // 啟用鉤子,擴展核心不修改系統檔

$config['global_xss_filtering'] = false; // 不建議全域開啟,效能影響大
// 控制器/模型中針對性使用 $this->security->xss_clean()

$config['csrf_protection'] = true;        // CI 3 內建 CSRF
$config['csrf_token_name'] = 'csrf_token';
$config['csrf_cookie_name'] = 'csrf_cookie';
$config['csrf_expire'] = 7200;            // 2 小時
$config['csrf_regenerate'] = true;        // 每次請求更新 Token

日誌與快取

<?php
$config['log_threshold'] = 1; // 1=錯誤, 2=除錯, 3=資訊, 4=全部, 0=關閉
// 生產建議 1,開發建議 2 或 4

$config['log_path'] = ''; // 空則用 application/logs/
$config['log_date_format'] = 'Y-m-d H:i:s';

$config['cache_path'] = ''; // 空則用 application/cache/
// 確保目錄可寫:chmod 755 application/cache application/logs

加密與 Session

<?php
$config['encryption_key'] = 'your-32-char-random-key-here'; // 必須設定,用於加密庫
// 產生:php -r "echo bin2hex(random_bytes(32));"

$config['sess_driver'] = 'files'; // files, database, redis, memcached
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL; // files 時為路徑,database 時為表名
$config['sess_match_ip'] = false;
$config['sess_time_to_update'] = 300;

效能優化

<?php
$config['compress_output'] = true; // 啟用 GZIP 輸出壓縮
// 需 PHP zlib 擴展,自動對支援的瀏覽器壓縮

$config['time_reference'] = 'local'; // 'local' 或 'gmt'
$config['rewrite_short_tags'] = false; // 短標籤 

代理 IP 設定(負載均衡器後方)

<?php
$config['proxy_ips'] = '10.0.0.1,10.0.0.2'; // 信任的代理 IP,用於 $this->input->ip_address()
// 逗號分隔,支援 CIDR:'10.0.0.0/24'

環境區分配置(開發/測試/生產)

<?php
// application/config/development/config.php
$config['log_threshold'] = 4;
$config['compress_output'] = false;

// application/config/production/config.php
$config['log_threshold'] = 1;
$config['compress_output'] = true;
$config['csrf_protection'] = true;

// index.php 設定環境
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

最佳實踐檢查清單

項目建議值說明
base_url完整 HTTPS URL避免自動偵測失敗
index_page''配合 .htaccess 隱藏 index.php
uri_protocolREQUEST_URI相容性最好
permitted_uri_chars嚴格正則防 XSS/注入
encryption_key32 字元隨機加密安全基石
csrf_protectiontrue防 CSRF 攻擊
compress_outputtrue減少傳輸體積
log_threshold生產 1平衡資訊與效能
proxy_ips實際代理 IP正確取得客戶 IP

常見問題排查

  • base_url 錯誤導致資源 404:檢查結尾斜線、HTTPS 一致性
  • URL 包含 index.php:確認 .htaccess RewriteRule、AllowOverride All
  • Session 失效:檢查 encryption_key、sess_save_path 可寫、Cookie domain
  • CSRF 驗證失敗:AJAX 請求需攜帶 Token、檢查 cookie_httponly/secure 設定
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved