【发布时间】:2016-01-06 12:27:13
【问题描述】:
我已经检查过关于 SO 的类似问题,但它们并没有解决我的问题。
我正在 Openshift 上部署 Symfony2 应用程序。它在我的 Windows 10 笔记本电脑上运行良好,但我在 Openshift 上收到以下error message:
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"
问题消失了,但我不知道为什么!
【问题讨论】:
-
你在开发环境中是否也遇到了异常?你跑
cache:clear了吗? -
我在运行
app_dev.php时没有遇到这个问题。我刚刚 ssl 登录到我的 openshift 应用程序并运行了php app/console cache:clear --env=prod。我从命令行得到完全相同的错误... -
总是运行 composer install,symfony 从 config.yml.dist 重新生成一个新的 config.yml。您是否更新了 config.yml.dist?从 openshift SSH 检查 config.yml 是否正常。
$ cat $OPENSHIFT_REPO_DIR/app/config/parameters.yml -
嗯
cat命令显示该参数不在我的parameters.yml中。确实,我没有在.dist中更新它。新手错误。 @felipsmartins 如果您创建解决方案,我会批准它。谢谢。