2015-10-08 4 views
7

Ich habe ähnliche Fragen zu SO überprüft, aber sie haben mein Problem nicht gelöst.Symfony2: Sie haben einen nicht vorhandenen Parameter angefordert

Ich verwende eine Symfony2-Anwendung auf OpenShift. Es funktioniert gut auf meinem Windows-10-Laptop, aber ich bin immer die folgende error message auf 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 

Mein config.yml ist:

imports: 
    - { resource: parameters.yml } 
    - { resource: security.yml } 
    - { resource: services.yml } 
... 

doctrine: 
    dbal: 
     driver: pdo_sqlite 
     charset: UTF8 
     path:  "%kernel.root_dir%/../%database_path%" 
... 

Mein parameters.yml ist:

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 
    ... 

und meine config_prod.yml ist:

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

Was mache ich falsch?

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

und das Problem ist weg, aber ich weiß nicht, warum:

aktualisieren

Ich habe meine config.yml geändert!

+1

Haben Sie die Ausnahme auch in der Entwicklungsumgebung erhalten? Hast du 'cache: clear' ausgeführt? – Federkun

+1

Ich hatte dieses Problem nicht bei der Ausführung von 'app_dev.php'. Ich habe gerade ssl in meine OpenShift-Anwendung eingeloggt und führte 'php app/console cache: clear --env = prod'. Ich bekomme genau den gleichen Fehler von der Kommandozeile ... – JVerstry

+0

Immer Composer-Installation läuft, symfony regeneriert eine neue config.yml aus config.yml.dist. Haben Sie Ihre config.yml.dist aktualisiert? Von OpenShift SSH überprüfen, ob config.yml in Ordnung ist. '$ cat $ OPENSHIFT_REPO_DIR/app/config/parameters.yml' – felipsmartins

Antwort

26

Dies ist ein häufiger Fehler.

Genau wie ich oben bemerkt habe:
Beim Laufen Komponist installiert, wird symfony eine neue parameters.yml Datei auf parameters.yml.dist (falls vorhanden) auf der Basis regenerieren.
Also ist es eine gute Idee immer überprüfen, ob parameters.yml generiert von Symfony (auf Post-Installation-Ereignis, Komponist) ist in Ordnung.

auch:

Wenn Sie die parameters.yml Datei aktualisieren (mit configs, die auch gut im prod Server sein sollte), müssen Sie die Datei parameters.yml.dist aktualisieren.

So wird der Bereitstellungsprozess viel weniger schmerzhaft sein.