2014-05-05 101 views
2

我在Apache上使用Laravel 4.1應用程序,並且在我的本地開發機器上一切正常,但在我的登臺機器上(共享主機上)用戶隨機獲取日誌並提示再次輸入他們的憑證。Laravel 4.1會話變量被隨機忘記

相關設置:

應用程序/配置/ session.php文件:使用Laravel默認的認證驅動程序

​​
  • 的php.ini:
    • gc_maxlifetime = 1440
    • gc_probability = 1
    • gc_divisor = 100

這似乎並不相同的問題,一些人都經歷過here。會話文件沒有被php清除。只有幾個會話變量隨機丟棄。

I tail -F'd會話文件,並且可以看到變量在一個請求和下一個請求之間何時被丟棄。

a:4:{ 
    s:5:"flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}} 
    s:6:"_token";s:40:"hvuw9VWWjssSwUL2C5eVSn0qZ2g1cwVF5YCEsLG7"; 
    s:38:"login_82e5d2c56bdd0811318f0cf078b78bfc";i:2; 
    s:9:"_sf2_meta";a:3:{s:1:"u";i:1399318721;s:1:"c";i:1399318011;s:1:"l";s:1:"0";}} 

後:

a:3:{ 
    s:6:"_token";s:40:"7o3b6NhiuDKXq4ftvngUefqe6cWybX1tzPEcDaxk"; 
    s:9:"_sf2_meta";a:3:{s:1:"u";i:1399318721;s:1:"c";i:1399318721;s:1:"l";s:1:"0";} 
    s:5:"flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}} 

的login_會消失,這將導致Laravel的Session類假定用戶未通過身份驗證之前,看起來像這樣(格式爲便於閱讀)。不過,我不確定爲什麼這個會話變量會下降。據我所知,會話變量中沒有Session :: forget,:: clear(),:: remove()或:: invalidate()被調用。

我還注意到_token變量在請求之間是不變的,直到問題出現在哪個點發生變化時爲止,如上所述。

任何想法這裏發生了什麼?

+0

你可以請發佈你的完整會話配置嗎?另外 - 你可以嘗試一個替代會議驅動器?也許數據庫暫時看看問題是否存在? – Laurence

+0

好吧,我已經發布了我的session.php上面 – ralbatross

+0

雖然不完全是一個問題 - 改變你的cookie名稱爲'東西' - 不要使用下劃線 - 它可能會導致一個問題。另外 - 嘗試關閉expire_on_close,看看是否有幫助。 http://stackoverflow.com/q/15016204/1317935 – Laurence

回答

0

切換到數據庫會話管理器似乎已經解決了這個問題。我懷疑在我的主機服務器配置上有一些方法可以讓php清除會話文件。