【发布时间】:2016-12-08 20:46:00
【问题描述】:
我昨天早上从 Symfony 3.1.5 升级到 3.2.0,直到一个小时左右之前一切都很好。
现在 Symfony 在任何类型的访问(包括控制台命令)上都会抛出以下异常:
[Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException]
服务“session.storage.metadata_bag”依赖于 不存在的参数“session.metadata.storage_key”。
我尝试了以下方法:
- 退出了我最近的更改
- 已删除 var/cache/*
这是异常跟踪:
Exception trace:
() at /Volumes/Data01/Projects/Beck/WWUI/site/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php:100
Symfony\Component\DependencyInjection\ParameterBag\ParameterBag->get() at /Volumes/Data01/Projects/Beck/WWUI/site/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ParameterBag/EnvPlaceholderParameterBag.php:56
Symfony\Component\DependencyInjection\ParameterBag\EnvPlaceholderParameterBag->get() at /Volumes/Data01/Projects/Beck/WWUI/site/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php:217
Symfony\Component\DependencyInjection\ParameterBag\ParameterBag->resolveString() at /Volumes/Data01/Projects/Beck/WWUI/site/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php:187
Symfony\Component\DependencyInjection\ParameterBag\ParameterBag->resolveValue() at /Volumes/Data01/Projects/Beck/WWUI/site/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php:177
Symfony\Component\DependencyInjection\ParameterBag\ParameterBag->resolveValue() at /Volumes/Data01/Projects/Beck/WWUI/site/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php:39
Symfony\Component\DependencyInjection\Compiler\ResolveParameterPlaceHoldersPass->process() at /Volumes/Data01/Projects/Beck/WWUI/site/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/Compiler.php:120
Symfony\Component\DependencyInjection\Compiler\Compiler->compile() at /Volumes/Data01/Projects/Beck/WWUI/site/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerBuilder.php:565
Symfony\Component\DependencyInjection\ContainerBuilder->compile() at /Volumes/Data01/Projects/Beck/WWUI/site/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:484
Symfony\Component\HttpKernel\Kernel->initializeContainer() at /Volumes/Data01/Projects/Beck/WWUI/site/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:116
Symfony\Component\HttpKernel\Kernel->boot() at /Volumes/Data01/Projects/Beck/WWUI/site/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:68
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /Volumes/Data01/Projects/Beck/WWUI/site/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:122
Symfony\Component\Console\Application->run() at /Volumes/Data01/Projects/Beck/WWUI/site/bin/console:29
如您所见,它是 Symfony 的一部分,而不是我的代码。
我很茫然。
有人看过这个吗?
有什么建议吗?
编辑 1:
根据 Dagon 的建议,我检查 session.xml,并看到它看起来正确,我决定替换
<argument>%session.metadata.storage_key%</argument>
标记
<argument>_sf2_meta</argument>
在 session.xml 中。这导致了一个新的类似错误:
[Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException]
服务 “64e3c91c625381e3c2c0184cf9ea0c6d5353986d77aa111949ca6fb8b17a8f07_2” 依赖于不存在的参数“validator.mapping。
缓存.前缀”。
【问题讨论】:
-
检查 session.xml
-
已检查供应商/...symfony/...config/session.xml。我看到 session.metadata.storage_key 参数设置为“_sf2_meta”,并且在 session.storage.metadata_bag 服务定义中使用了该密钥。对于为什么 Symfony 报告该参数不存在感到困惑。如果有帮助,可以发布 session.xml 文件。