web-dev-qa-db-ja.com

Symfony2:存在しないパラメータをリクエストしました

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

私の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"

問題はなくなりましたが、理由はわかりません!

11

これはよくある間違いです。

上記と同じように:
composer installを実行すると、symfonyはparameters.yml(存在する場合)に基づいて新しいparameters.yml.distファイルを再生成します。
symfonyによって生成されたparameters.yml(ポストインストールイベント、作曲家)が問題ないかどうかを常に確認することをお勧めします。

また:

parameters.ymlファイルを更新するときはいつでも(prodサーバーにもあるはずの構成を使用して)、ファイルparameters.yml.distも更新する必要があります。

そのため、展開プロセスの負担が大幅に軽減されます。

36
felipsmartins