thinkphp設定session無效的問題
阿新 • • 發佈:2019-02-15
thinkphp的session設定週期是無效的;
直接的影響就是無法保留使用者的登陸狀態;
用thinkphp開發的專案;關閉瀏覽器後用戶就退出了;
即便設定了session週期也沒作用;
這個bug存在很久了;但是thinkphp官網一直沒處理更新;
吐槽完畢;下面來解決這個bug;
首先需要在 /Thinkphp/Common/funtion.php 公告函式的第1213行新增如下內容;
如果不是在1213行;就搜尋gc_maxlifetime
1 2 3 4 5 |
// 1213行原始碼
if (isset( $name [ 'expire' ])) ini_set ( 'session.gc_maxlifetime' , $name [ 'expire' ]);
// 改成如下程式碼
if (isset( $name [ 'expire' ])) ini_set ( 'session.gc_maxlifetime' , $name [ 'expire' ]); ini_set ( 'session.cookie_lifetime' , $name [ 'expire' ]);
|
原始碼:
更改後的程式碼:
然後在配置項/Application/Common/conf/config.php中新增如下程式碼
1 2 3 4 5 6 7 |
//***********************************SESSION設定********************************** 'SESSION_OPTIONS' => array (
'name' => 'BJYSESSION' , //設定session名
'expire' => 24*3600*15, //SESSION儲存15天
'use_trans_sid' => 1, //跨頁傳遞
'use_only_cookies' => 0, //是否只開啟基於cookies的session的會話方式
),
|
ok;大功告成;
//***********************************不怎麼華麗的分割線**********************************
後來還是不斷有親們的session週期失效;
特貼一份設定正確的專案連線;
可以嘗試下載bjyadmin到本地;然後在bjyadmin上測試;
如果bjyadmin的session也失效;那可能是本地環境有問題;
如果bjyadmin的session正常;而自己的專案session失效;
那就可以確認是自己專案的session配置有錯誤的地方;
照著bjyadmin抄配置即可;