我正在使用Wamp64在本地开发Symfony 3.4网站。会话管理是Symfony 3.4的默认设置(文件形式)。我的代码专门添加到会话存储中的唯一内容是一个变量,即整数。
但是,我可以浏览几页看到错误的页面,然后复制一个问题:
Warning: session_start(): Failed to decode session object. Session has been destroyed
仅当离开某些页面时才会发生(它们似乎是表单字段数量相对较多(包括4或5个EntityType字段)的页面)。它的作用就好像会话文件太大了(尽管我没有发现有大小限制的文件,文件约为50kB)或被表单中的数据损坏了。我发现有线程表明这可能是由于存储不寻常的字符引起的,但是我对字符集的形式或实体没有做任何不寻常的事情。
最初,我一直在会话中存储完整的实体。研究表明,这可能是问题所在,因此将内容重构为仅存储实体的ID。不用找了。我发现这里的线程将问题归咎于垃圾回收,但是我所做的任何更改都没有任何区别。至少现在还没有在部署服务器上遇到此问题。
错误消息的文本似乎来自PHP本身(该字符串不在symfony脚本文件中)。
有什么想法吗?还是调试建议?
更新:我发现确实是通过将一个复杂的实体保存到会话中触发该问题的(由于某种原因搜索未能找到它)。没关系我只需要找到另一种解决方法。