Jér*_*nge 10 php symfony openshift
我在SO上检查了类似的问题,但他们没有解决我的问题.
我正在Openshift上部署Symfony2应用程序.它在我的Windows 10笔记本电脑上运行良好,但我在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
Run Code Online (Sandbox Code Playgroud)
我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%"
...
Run Code Online (Sandbox Code Playgroud)
我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
...
Run Code Online (Sandbox Code Playgroud)
而我的config_prod.yml是:
imports:
- { resource: config.yml }
...
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
更新
我改变config.yml了:
path: "%kernel.root_dir%/../data/demo.db"
Run Code Online (Sandbox Code Playgroud)
而问题已经消失,但我不知道为什么!
fel*_*ins 35
这是一个常见的错误.
就像我上面评论的那样:
当运行composer install时,symfony将parameters.yml基于parameters.yml.dist(如果有的话)重新生成一个新文件.
所以总是检查是否parameters.yml由symfony(在安装后事件,作曲家上)生成是一个好主意.
也:
每当您更新
parameters.yml文件时(使用应该在prod服务器中的配置),您也必须更新文件parameters.yml.dist.
因此,部署过程将不那么痛苦.