2015-10-08 17 views
7

Ho verificato domande simili su SO, ma non hanno risolto il problema.Symfony2: è stato richiesto un parametro inesistente

Sto distribuendo un'applicazione Symfony2 su Openshift. Funziona bene sul mio Windows 10 computer portatile, ma sto ottenendo il seguente error message su 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 

mio 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%" 
... 

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

e la mia config_prod.yml è:

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

Cosa sto sbagliando?

Aggiornamento

ho cambiato config.yml a:

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

e la questione è andato, ma io non so perché!

+1

Hai ottenuto l'eccezione anche nell'ambiente di sviluppo? Hai eseguito 'cache: clear'? – Federkun

+1

Non ho riscontrato questo problema durante l'esecuzione di 'app_dev.php'. Ho appena eseguito l'accesso a ssl nella mia applicazione openshift e ho eseguito l'applicazione 'php app/console cache: clear --env = prod'. Sto ottenendo esattamente lo stesso errore dalla riga di comando ... – JVerstry

+0

Installa sempre l'installazione di compositore, symfony rigenera un nuovo config.yml da config.yml.dist. Disd hai aggiornato il tuo config.yml.dist? Da openshift SSH controlla se config.yml è okay. '$ cat $ OPENSHIFT_REPO_DIR/app/config/parameters.yml' – felipsmartins

risposta

26

Questo è un errore comune.

Proprio come ho commentato sopra:
Quando si esegue compositore installare, symfony rigenerare un nuovo file parameters.yml sulla base di parameters.yml.dist (se presente).
Quindi è una buona idea controllare sempre se parameters.yml generato da symfony (su evento post installazione, compositore) è ok.

anche:

ogni volta che aggiorni il file parameters.yml (con file di configurazione che dovrebbe essere nel server prod anche bene), è necessario aggiornare il file parameters.yml.dist troppo.

Quindi il processo di implementazione sarà molto meno doloroso.

Problemi correlati