2015-10-08 4 views
7

Я проверил похожие вопросы на SO, но они не решили мою проблему.Symfony2: Вы запросили несуществующий параметр

Я развертываю приложение Symfony2 на Openshift. Он хорошо работает на моем 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 is:

imports: 
    - { resource: config.yml } 
... 

Что я делаю неправильно?

Update

Я изменил мой config.yml на:

path:  "%kernel.root_dir%/../data/demo.db" 

и проблема ушла, но я не знаю, почему!

+1

Вы также получили исключение в среде dev? Вы запустили кеш: clear? – Federkun

+1

У меня не было этой проблемы при запуске 'app_dev.php'. Я только что запустил ssl в мое приложение openshift и запустил кеп php app/console: clear --env = prod'. Я получаю точно такую ​​же ошибку из командной строки ... – JVerstry

+0

Всегда выполняющая компоновщик install, symfony восстанавливает новый config.yml из config.yml.dist. Disd, вы обновили свой config.yml.dist? Из openshift SSH проверьте, нормально ли config.yml. '$ cat $ OPENSHIFT_REPO_DIR/app/config/parameters.yml' – felipsmartins

ответ

26

Это распространенная ошибка.

Так же, как я заметил выше:
При запуске композитор установки, Symfony будет регенерировать новый файл parameters.yml, основанный на parameters.yml.dist (если таковые имеются).
Так что это хорошая идея, всегда проверяйте, есть ли parameters.yml, сгенерированный symfony (на мероприятии после установки, композитор) в порядке.

также:

Всякий раз, когда вы обновляете parameters.yml файл (с конфигов, что должен быть на сервере прод также хорошо), необходимо обновить файл parameters.yml.dist тоже.

Таким образом, процесс развертывания будет намного менее болезненным.

Смежные вопросы