我遇到了一个新的Symfony 3.0.1安装这个奇怪的问题。我生成了一个带有Form PostType的新CRUD控制器,它包含一个url和一个标题。没什么好看的。
表单按预期呈现。它包含我的url字段和title字段。在表单内部,还会呈现隐藏的输入字段_token。
提交此表单时,我会一直收到以下错误:
The CSRF token is invalid. Please try to resubmit the form.
因此令牌被添加到表单中,它包含一个值,我有一个常量的PHP会话cookie值,只是这个令牌无效。
我已经搜索了其他答案,但类似的问题都是由缺少_token输入引起的。
Symfony 3.0.2 / 3.0.3中也会出现此问题。
答案 0 :(得分:13)
在我的情况下,var/sessions/
文件夹不可写。默认值为var / sessions,它在config.yml中设置。
session:
# http://symfony.com/doc/current/reference/configuration/framework.html#handler-id
handler_id: session.handler.native_file
save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%"
确保var/ folders
可写。
chmod 775 -R var/sessions/
chmod 775 -R var/log/
chmod 775 -R var/cache/
答案 1 :(得分:6)
我刚与Symfony 3.2有类似的问题
CSRF令牌无效。请尝试重新提交表单。
下班后,我们终于发现问题与session.cookie_secure(https)有关:
我们的生产环境使用https,因此强制通过https保护cookie。开发环境使用http。将开发人员从HTTP移至HTTPS后,问题得以解决。
答案 2 :(得分:1)
我正在使用Symfony 3.2.1,它在一台机器上工作,但在另一台机器上工作。不知道为什么。
@Shrihari他的回答让我得到了以下解决方案。
我的项目也有cookie_secure: true
。
我更新了config_dev.yml
并在文件中添加了cookie_secure: false
。
framework:
session:
cookie_secure: false
这对我有用。
答案 3 :(得分:0)
似乎是symfony版本> 3.0,< 3.0.3中的错误。
正如@yellowmen指出的那样,更改framework.session.save_path
中的config.yml
可以解决问题。
答案 4 :(得分:0)
该错误也出现在3.0.4中。
save_path: ~
为我工作。
答案 5 :(得分:0)
从dev
切换到test
环境时,Symfony 4.2遇到了类似的问题。
我的framework.yaml
文件中有以下设置:
framework:
session:
storage_id: session.storage.mock_file
删除storage_id: session.storage.mock_file
设置可以解决此问题。
重要:您可能必须清除缓存才能生效。
有关storage_id
-配置选项的更多信息,请参见here。
答案 6 :(得分:0)
我在env = dev上有相同的东西,但在preprod(symfony 4.4)上却没有
-解决方案-
根目录中缺少会话目录 我创建了一个,然后问题解决了。
欢呼