2014-04-28 11 views
6

So che questo è un grande NO NO ... e non dovrei visualizzare le pagine degli errori degli sviluppatori mentre il mio sito è attivo, cosa posso fare per garantire che i messaggi di errore dell'ambiente di sviluppo non vengano visualizzati in produzione ?Dev le eccezioni sono mostrate nell'ambiente di produzione

enter image description here

Perché sono questi che appaiono? Ho pensato che fosse disattivato per impostazione predefinita in modalità di produzione? Mi sono perso un'impostazione?

Nota: Questo è su un server condiviso. E sto usando l'app.php not app_dev.php.

Quando vado a modalità di produzione a livello locale si visualizza correttamente i messaggi di errore di destra (sotto):

Oops! Si è verificato un errore Il server ha restituito "404 non trovato". Qualcosa è rotto. Inviaci un'email all'indirizzo [email] e facci sapere cosa stavi facendo quando si è verificato questo errore. Lo sistemeremo il prima possibile. Spiacente per qualunque inconveniente causato.

Eppure sul sito live viene visualizzato il messaggio di errore dell'ambiente di sviluppo di Symfony2?

Ho cercato di fare un messaggio di errore personalizzato facendo un file error404.html.twig in app/Resource/TwigBundle/views/Exception ma ancora non caricare questo file e solo visualizza l'errore sviluppatore Messaggio.

+0

Stai effettivamente utilizzando l'ambiente "dev" di Symfony? Nota che ci sono due front controller nella cartella 'web',' app.php' e 'app_dev.php'. Quale stai usando? –

+0

Utilizzo di app.php. Non mi consentirà nemmeno di usare app_dev.php, quando cerco di ottenere questo messaggio di errore "Non sei autorizzato ad accedere a questo file. Controlla app_dev.php per ulteriori informazioni." – dizzyd

+0

In app.php - $ kernel = nuovo AppKernel ('prod', vero); – dizzyd

risposta

11

Nel controller di frontend (web/app.php in Symfony Standard Edition), viene creata un'istanza di AppKernel. AppKernel eredita la constructor from Symfony's Kernel, che richiede due argomenti

/** 
* Constructor. 
* 
* @param string $environment The environment 
* @param bool $debug  Whether to enable debugging or not 
*/ 
public function __construct($environment, $debug) 

Il parametro $environment determina solo quale configurazione viene utilizzata (config_dev.yml, config_prod.yml, ecc). Il parametro $debug è quello che abilita o disabilita il debug (e quindi determina se le eccezioni sono mostrate o meno).

Quindi, in app.php, modificare:

$kernel = new AppKernel('prod', true); 

a

$kernel = new AppKernel('prod', false); 

Questo dovrebbe sostituire le pagine non dettagliate con le pagine di errore user-friendly.

+0

Ha funzionato! Dove trovo $ debug è impostato su true in? Stavo seguendo una guida che menzionata per girare ''prod', true'. È in app_dev.php dove ''dev', true'? – dizzyd

+0

Cosa intendi? Si imposta '$ debug' su true quando si crea una nuova istanza (' $ kernel = new AppKernel ('prod', true); '). Il costruttore è definito in 'vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php' alla riga 77. –

+0

Non' $ kernel = nuovo AppKernel ('prod', vero); 'Significa te ' re impostandolo sulla modalità di produzione?Questo è dove mi sto confondendo. Stavo seguendo questa guida qui: http://www.livelywebdesign.com/blog/2013/05/symfony-2-application-on-shared-hosting/#comment-52147 – dizzyd

Problemi correlati