我在SO上查过类似的问题,但他们没有解决我的问题。
我正在 Openshift 上部署 Symfony2 应用程序。它在我的 Windows 10 笔记本电脑上运行良好,但我得到以下信息 error message在 Openshift 上:
Fatal error: Uncaught exception 'Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException'
with message 'You have requested a non-existent parameter "database_path".
Did you mean one of these: "database_host", "database_port", "database_name", "database_user"?'
in /var/lib/openshift/55eed4837628e1199f0000bb/app-root/runtime/repo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php:106 Stack trace: #0
/var/lib/openshift/55eed4837628e1199f0000bb/app-root/runtime/repo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php(248):
Symfony\Component\DependencyInjection\ParameterBag\ParameterBag->get('database_path') #1 [internal function]:
Symfony\Component\DependencyInjection\ParameterBag\ParameterBag->Symfony\Component\DependencyInjection\ParameterBag\{closure}(Array) #2
/var/lib/openshift/55eed4837628e1199f0000bb/app-root/runtime/repo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php in
/var/lib/openshift/55eed4837628e1199f0000bb/app-root/runtime/repo/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php on line 106
我的 config.yml 是:
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
...
doctrine:
dbal:
driver: pdo_sqlite
charset: UTF8
path: "%kernel.root_dir%/../%database_path%"
...
我的 parameters.yml 是:
parameters:
database_driver: pdo_sqlite
database_host: localhost
database_port: null
database_name: demo.db
database_user: root
database_password: null
database_path: /data/demo.db
...
我的 config_prod.yml 是:
imports:
- { resource: config.yml }
...
我做错了什么?
更新
我已将我的 config.yml 更改为:
path: "%kernel.root_dir%/../data/demo.db"
问题消失了,但我不知道为什么!
最佳答案
这是一个常见的错误。
就像我上面评论的那样:
当运行 composer 安装时,symfony 将根据 parameters.yml.dist(如果有的话)重新生成一个新的 parameters.yml 文件。
因此,最好始终检查 symfony 生成的 parameters.yml(在安装后事件中,composer)是否正常。
还有:
Whenever you update the
parameters.ymlfile (with configs that should be in the prod server also well), you must update the fileparameters.yml.disttoo.
因此部署过程会轻松很多。
关于php - Symfony2 : You have requested a non-existent parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33023299/