【问题标题】:Symfony2: You have requested a non-existent parameterSymfony2:您请求了一个不存在的参数
【发布时间】: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 如果您创建解决方案,我会批准它。谢谢。

标签: php symfony openshift


【解决方案1】:

这是一个常见的错误。

就像我上面评论的那样:
运行 composer 安装时,symfony 将基于 parameters.yml.dist(如果有)重新生成一个新的 parameters.yml 文件。
因此,最好始终检查 symfony 生成的 parameters.yml(在安装后事件中,作曲家)是否正常。

还有:

每当您更新 parameters.yml 文件时(配置 应该在产品服务器中也很好),您必须更新文件 parameters.yml.dist 也是。

所以部署过程会少很多痛苦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 2011-09-07
    • 1970-01-01
    • 2013-02-03
    • 2018-03-02
    相关资源
    最近更新 更多