萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP 5 php.ini Session 設定完整參考手冊

PHP 5 Session 設定項詳解 (php.ini)

php.ini 中的 Session 相關指令直接影響 session_start() 等函數行為。以下針對 PHP 5 版本整理所有 Session 設定參數、預設值與說明,修改後需重啟 Web 服務生效。

核心儲存設定

指令預設值說明
session.save_handlerfiles儲存機制:files (檔案)、user (自定義)、memcached、redis 等。
session.save_path/tmp檔案儲存路徑 (save_handler=files 時)。確保目錄可寫、權限安全 (建議 600/700)。
session.serialize_handlerphp序列化引擎:php (預設)、php_binary、wddx、igbinary 等。

Cookie 相關設定

指令預設值說明
session.use_cookies1是否使用 Cookie 傳遞 Session ID (1=啟用)。
session.namePHPSESSIDSession Cookie 名稱。
session.auto_start0請求自動啟動 Session (1=啟用)。建議 0,由程式控制。
session.cookie_lifetime0Cookie 生存期 (秒)。0 = 瀏覽器關閉即失效 (Session Cookie)。
session.cookie_path/Cookie 有效路徑。
session.cookie_domain(空)Cookie 有效域名。空 = 當前域名;設為 .example.com 可跨子域共享。
session.cookie_secure0僅 HTTPS 傳送 Cookie (需 HTTPS 環境)。
session.cookie_httponly1 (PHP 5.2+)禁止 JS 存取 Cookie (防 XSS 竊取)。
session.cookie_samesite(PHP 7.3+)SameSite 屬性:Lax/Strict/None。

垃圾回收 (GC) 設定

指令預設值說明
session.gc_probability1GC 啟動機率分子。
session.gc_divisor1000GC 啟動機率分母。啟動機率 = probability/divisor (預設 0.1%)。
session.gc_maxlifetime1440Session 資料最大生存秒數 (24 分鐘)。超過視為垃圾被清除。

注意: 若多專案共用 save_path,GC 可能誤刪他專案 Session。建議各專案設定獨立 save_path 或使用資料庫/Redis 儲存。

相容性與安全設定

指令預設值說明
session.bug_compat_420PHP 4.2 相容模式 (已棄用)。
session.bug_compat_warn1相容模式警告。
session.referer_check(空)檢查 HTTP Referer 含此字串,否則拒絕 Session ID (防 CSRF 輔助)。
session.entropy_length0額外熵來源長度 (位元)。
session.entropy_file(空)熵來源檔案 (如 /dev/urandom),增強 Session ID 隨機性。
session.hash_function0 (MD5)Session ID 雜湊演算法:0=MD5(128bit)、1=SHA-1(160bit)。
session.hash_bits_per_character5每字元位元數:4=0-9a-f、5=0-9a-v、6=0-9a-zA-Z,-。值越大 ID 越短。
session.use_trans_sid0透明 Session ID (自動附加到 URL)。0=關閉 (安全建議)。

快取控制

指令預設值說明
session.cache_limiternocache快取控制標頭:nocache/private/public/private_no_expire。
session.cache_expire180快取文件過期分鐘數 (cache_limiter≠nocache 時)。

URL 重寫標籤

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

當 use_trans_sid=1 時,輸出緩衝區會自動在這些標籤屬性加入 Session ID。

修改後生效步驟

  1. 編輯 php.ini。
  2. 重啟 Web 服務:systemctl restart php-fpm / apachectl restart / nginx -s reload (視架構)。
  3. 用 phpinfo() 或 ini_get('session.save_path') 驗證。

生產環境建議最小調整

session.save_path = /var/lib/php/sessions_你的專案 ; 獨立目錄
session.cookie_httponly = 1
session.cookie_secure = 1 ; 僅 HTTPS
session.cookie_samesite = Lax
session.gc_maxlifetime = 7200 ; 2 小時
session.gc_probability = 1
session.gc_divisor = 1000
session.use_trans_sid = 0
copyright © 萬盛學電腦網 all rights reserved