php.ini 配置session自動開啟
專案是一個管理平臺,後臺登入需要儲存該賬號的session,session會記錄該賬號的所有角色和許可權,有一天平臺的個別模組開啟後會報錯誤,接著看其它模組,點選後也會出現這樣的錯誤,重新整理會自動退出。
除錯顯示的是500錯誤,懷疑伺服器磁碟滿或檔案量大,優化後還是沒啥用,看看nginx的報錯資訊
nginx顯示找不到該檔案,以為是許可權問題,從許可權角度解決,賦予777許可權,沒有啥用;還是看session吧,發現第一次登入session報錯的是完整記錄,點選報錯後session數值也變化了。
php.ini session 配置項有個自動開啟的許可權,預設是關閉,改成自動開啟就完美解決。
php.ini session 的其它配置說明:
session.save_handler = ”files”
預設以檔案方式存取session資料,如果想要使用自定義的處理器來存取session資料,比如資料庫,用”user”。
session.use_cookies = 1
是否使用cookies在客戶端儲存會話sessionid,預設為採用cookies
session.use_only_cookies = 0
是否僅僅使用cookie在客戶端儲存會話sessionid,這個選項可以使管理員禁止使用者通過URL來傳遞id,預設為0,如果禁用的話,客戶端如果禁用Cookie將使session無法工作。
session.name = “PHPSESSID”
當做cookie name來使用的session標識名
session.cookie_lifetime = 0
傳遞sessionid的Cookie有效期(秒),0表示僅在瀏覽器開啟期間有效。
session.gc_probability = 1
session.gc_divisor = 100
定義在每次初始化會話時,啟動垃圾回收程式的概率。計算公式如下:session.gc_probability/session.gc_divisor,比如1/100,表示有1%的概率啟動啟動垃圾回收程式,對會話頁面訪問越頻繁,概率就應當越小。建議值為1/1000~5000。
session.gc_maxlifetime = 1440
設定儲存的session檔案生存期,超過此引數設定秒數後,儲存的資料將被視為’垃圾’並由垃圾回收程式清理。判斷標準是最後訪問資料的時間(對於FAT檔案系統是最後重新整理資料的時間)。如果多個指令碼共享同一個session.save_path目錄但session.gc_maxlifetime不同,將以所有session.gc_maxlifetime指令中的最小值為準。
如果你在session.save_path選項中設定使用子目錄來儲存session資料檔案,垃圾回收程式不會自動啟動,你必須使用自己編寫的shell指令碼、cron項或者其他辦法來執行垃圾蒐集。
比如設定”session.gc_maxlifetime=1440″ (24分鐘):
cd /path/to/sessions; find -cmin +24 | xargs rm
以上是一些常用的session配置選項說明,更多的session配置選項說明你可以參考php.ini檔案中的說明。