簡體   English   中英

頁面加載后,Symfony2會話未持久

[英]Symfony2 sessions aren't persisting after page load

我在Symfony2網站上遇到問題。 我已經在生產服務器上運行了代碼庫,這絕對好,但是我正試圖讓另一個開發人員開始該項目,並且我們在構建和運行時遇到了問題。 環境幾乎相同,開發人員使用的是Vagrant實例,該實例上的相同配置用於在AWS上配置EC2實例。

提交表單后,該操作將通過Symfonys會話處理程序進行處理並存儲到會話中,然后重定向到組成該表單第二步的另一個操作。 我可以在Xdebug中看到這些值已添加到全局$ _SESSION變量中,但是,當我在第二個操作中到達下一個斷點時,$ _ SESSION變量將丟失其上一個操作中的內容。 我不會在任何地方清除會話,正如我所說的,在生產環境中工作正常。

幾乎就像Symfony不在頁面加載之間存儲會話數據一樣,有人有想法嗎?

嘗試過的事情

  • 將Cookie域添加到配置
  • 將權限設置為777(僅用於測試)
  • PHP版本相距一個小迭代(5.4.28-1與5.4.27-1)

從PHP 5.4.27升級到PHP 5.4.28后,我遇到了類似的問題,在我的情況下,它與以下錯誤有關: https ://bugs.php.net/bug.php?id=66171

引用說明:

第二個問題:當session.save_path是每個人都可以寫入的目錄(例如在Debian上)時,即使無法找到現有會話的ID,本地攻擊者也可以使用惡意會話數據創建一個新的會話文件,將其更改為666,並使用他選擇的會話ID訪問系統上托管的任何Webapp。 然后,Web應用程序將打開會話文件,並將其視為已創建文件。 我的解決方案:fstat()會話,檢查創建文件的uid。 如果它既不是getuid()也不是uid 0的結果,則忽略現有文件。

現在,他們將會話文件的所有者與執行PHP腳本的用戶進行比較,如果uid不匹配,則將忽略該會話文件。 在我的情況下,apache用戶具有通過組權限訪問會話文件的權限,但是由於uid不匹配,PHP無法加載會話文件。

查看您的會話文件(您可以在php.ini文件中找到保存路徑),並確保文件的所有者與嘗試訪問它們的用戶匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM