下面是php.ini中session的配置說明:
session.save_handler = "files"
存儲和檢索與會話關聯的數據的處理器名字。默認為文件("files")。
如果想要使用自定義的處理器(如基於數據庫的處理器),可用"user"。
有一個使用PostgreSQL的處理器:http://sourceforge.net/projects/phpform-ext/
session.save_path = "/tmp"
傳遞給存儲處理器的參數。對於files處理器,此值是創建會話數據文件的路徑。
Windows下默認為臨時文件夾路徑。
你可以使用"N[MODE]/path"這樣模式定義該路徑(N是一個整數)。
N表示使用N層深度的子目錄,而不是將所有數據文件都保存在一個目錄下。
[MODE]可選,必須使用8進制數,默認600(=384),表示每個目錄下最多保存的會話文件數量。
這是一個提高大量會話性能的好主意。
注意0: "N[MODE]/path"兩邊的雙引號不能省略。
注意1: [MODE]並不會改寫進程的umask。
注意2: php不會自動創建這些文件夾結構。請使用ext/session目錄下的mod_files.sh腳本創建。
注意3: 如果該文件夾可以被不安全的用戶訪問(比如默認的"/tmp"),那麼將會帶來安全漏洞。
注意4: 當N>0時自動垃圾回收將會失效,具體參見下面有關垃圾搜集的部分。
session.name = "PHPSESSID"
用在cookie裡的會話ID標識名,只能包含字母和數字。
session.auto_start = Off
在客戶訪問任何頁面時都自動初始化會話,默認禁止。
因為類定義必須在會話啟動之前被載入,所以若打開這個選項,你就不能在會話中存放對象。
session.serialize_handler = "php"
用來序列化/解序列化數據的處理器,php是標准序列化/解序列化處理器。
另外還可以使用"php_binary"。當啟用了WDDX支持以後,將只能使用"wddx"。
session.gc_probability = 1
session.gc_divisor = 100
定義在每次初始化會話時,啟動垃圾回收程序的概率。
這個收集概率計算公式如下:session.gc_probability/session.gc_divisor
對會話頁面訪問越頻繁,概率就應當越小。建議值為1/1000~5000。
session.gc_maxlifetime = 1440
超過此參數所指的秒數後,保存的數據將被視為'垃圾'並由垃圾回收程序清理。
判斷標准是最後訪問數據的時間(對於FAT文件系統是最後刷新數據的時間)。
如果多個腳本共享同一個session.save_path目錄但session.gc_maxlifetime不同,
那麼將以所有session.gc_maxlifetime指令中的最小值為准。
如果使用多層子目錄來存儲數據文件,垃圾回收程序不會自動啟動。
你必須使用一個你自己編寫的shell腳本、cron項或者其他辦法來執行垃圾搜集。
比如,下面的腳本相當於設置了"session.gc_maxlifetime=1440" (24分鐘):
cd /path/to/sessions find -cmin +24 | xargs rm
session.referer_check =
如果請求頭中的"Referer"字段不包含此處指定的字符串則會話ID將被視為無效。
注意:如果請求頭中根本不存在"Referer"字段的話,會話ID將仍將被視為有效。
默認為空,即不做檢查(全部視為有效)。
session.entropy_file = "/dev/urandom"
附加的用於創建會話ID的外部高熵值資源(文件),
例如UNIX系統上的"/dev/random"或"/dev/urandom"
session.entropy_length = 0
從高熵值資源中讀取的字節數(建議值:16)。
session.use_cookies = On
是否使用cookie在客戶端保存會話ID
session.use_only_cookies = Off
是否僅僅使用cookie在客戶端保存會話ID
打開這個選項可以避免使用URL傳遞會話帶來的安全問題。
但是禁用Cookie的客戶端將使會話無法工作。
session.cookie_lifetime = 0
傳遞會話ID的Cookie有效期(秒),0 表示僅在浏覽器打開期間有效。
session.cookie_path = "/"
傳遞會話ID的Cookie作用路徑。
session.cookie_domain =
傳遞會話ID的Cookie作用域。
默認為空表示表示根據cookie規范生成的主機名。
session.cookie_secure = Off
是否僅僅通過安全連接(https)發送cookie。
session.cookie_httponly = Off
是否在cookie中添加httpOnly標志(僅允許HTTP協議訪問),
這將導致客戶端腳本(JavaScript等)無法訪問該cookie。
打開該指令可以有效預防通過XSS攻擊劫持會話ID。
session.cache_limiter = "nocache"
設為{nocache|private|public}以指定會話頁面的緩存控制模式,
或者設為空以阻止在http應答頭中發送禁用緩存的命令。
session.cache_expire = 180
指定會話頁面在客戶端cache中的有效期限(分鐘)
session.cache_limiter=nocache時,此處設置無效。
session.use_trans_sid = Off
是否使用明碼在URL中顯示SID(會話ID)。
默認是禁止的,因為它會給你的用戶帶來安全危險:
1- 用戶可能將包含有效sid的URL通過email/irc/QQ/MSN…途徑告訴給其他人。
2- 包含有效sid的URL可能會被保存在公用電腦上。
3- 用戶可能保存帶有固定不變sid的URL在他們的收藏夾或者浏覽歷史紀錄裡面。
基於URL的會話管理總是比基於Cookie的會話管理有更多的風險,所以應當禁用。
session.bug_compat_42 = On
session.bug_compat_warn = On
PHP4.2之前的版本有一個未注明的"BUG":
即使在register_globals=Off的情況下也允許初始化全局session變量,
如果你在PHP4.3之後的版本中使用這個特性,會顯示一條警告。
建議關閉該"BUG"並顯示警告。
session.hash_function = 0
生成SID的散列算法。SHA-1的安全性更高一些
0: MD5 (128 bits)
1: SHA-1 (160 bits)
建議使用SHA-1。
session.hash_bits_per_character = 4
指定在SID字符串中的每個字符內保存多少bit,
這些二進制數是hash函數的運算結果。
4: 0-9, a-f
5: 0-9, a-v
6: 0-9, a-z, A-Z, "-", ","
建議值為 5
url_rewriter.tags = "a=href,area=href,frame=src,form=,fieldset="
此指令屬於PHP核心部分,並不屬於Session模塊。
指定重寫哪些HTML標簽來包含SID(僅當session.use_trans_sid=On時有效)
form和fieldset比較特殊:
如果你包含他們,URL重寫器將添加一個隱藏的"<input>",它包含了本應當額外追加到URL上的信息。
如果要符合XHTML標准,請去掉form項並在表單字段前後加上<fieldset>標記。
注意:所有合法的項都需要一個等號(即使後面沒有值)。
推薦值為"a=href,area=href,frame=src,input=src,form=fakeentry"。