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

CodeIgniter 自動載入 Session 報錯解決:必須設置加密密鑰

     編輯:PHP 相關知識

CodeIgniter 開啟 $autoload['libraries'] = ['session'] 後報錯:「In order to use the Session class you are required to set an encryption key」。原因是 Session 類依賴加密庫,必須配置 encryption_key。

解決方法

編輯 application/config/config.php,設置加密密鑰:

$config['encryption_key'] = 'your_strong_random_key_here';

密鑰生成建議

  • 長度 ≥ 32 字符
  • 包含大小寫、數字、特殊符號
  • 使用隨機生成器:openssl_random_pseudo_bytes(32) 或線上工具
  • 不同環境(開發/測試/生產)使用不同密鑰

配置位置說明

/*

|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| If you use the Encryption class or the Session class you
| MUST set an encryption key.  See the user guide for info.
|
*/
$config['encryption_key'] = 'xxxxx'; // 在這裡設置

驗證修復

  1. 保存配置文件
  2. 刷新頁面,錯誤消失
  3. Session 正常讀寫

補充:Session 配置最佳實踐

$config['sess_driver'] = 'files';        // 或 database/redis/memcached
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;       // 2小時
$config['sess_save_path'] = APPPATH . 'cache/sessions/'; // files 驅動路徑
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

常見問題

現象原因解決
Session 不生效sess_save_path 目錄不可寫chmod 777 或修改驅動
頻繁掉線sess_expiration 過短調大或啟用 sess_time_to_update
多服務器不同步files 驅動不共享改用 database/redis 驅動
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved