2014-04-28 5 views
6

Ich weiß, dies ist ein großes NEIN NEIN ... und sollte keine Entwicklerfehlerseiten anzeigen, während meine Site aktiv ist, was kann ich tun, um sicherzustellen, dass die Fehlermeldungen der Entwicklungsumgebung nicht in der Produktion erscheinen ?Dev-Ausnahmen werden in der Produktionsumgebung angezeigt

enter image description here

Warum diese erscheinen werden? Ich dachte, es war im Produktionsmodus standardmäßig ausgeschaltet? Habe ich eine Einstellung vermisst?

Hinweis: Dies ist auf einem freigegebenen Server. Und benutze die app.php nicht app_dev.php.

Wenn ich in den Produktionsmodus gehen lokal zeigt es richtig, die richtigen Fehlermeldungen (siehe unten):

Hoppla! Ein Fehler ist aufgetreten Der Server gab ein "404 Not Found" zurück. Etwas ist kaputt. Bitte senden Sie uns eine E-Mail an [email] und lassen Sie uns wissen, was Sie taten, als dieser Fehler auftrat. Wir werden es so schnell wie möglich beheben. Wir entschuldigen uns für etwaige Unannehmlichkeiten.

Noch auf der Live-Site zeigt es die Symfony2 dev-Umgebung Fehlermeldung?

Ich habe versucht, eine benutzerdefinierte Fehlermeldung zu machen, indem Sie eine error404.html.twig Datei in app/Ressource/TwigBundle/views/Exception aber es laden noch diese Datei nicht und zeigt nur die Entwickler Fehler Botschaft.

+0

Verwenden Sie tatsächlich Symfonys Dev-Umgebung? Beachten Sie, dass sich im 'web'-Ordner zwei Front-Controller befinden,' app.php' und 'app_dev.php'. Welchen benutzen Sie? –

+0

Verwenden von app.php. Es wird nicht einmal app_dev.php verwenden, wenn ich versuche, bekomme ich diese Fehlermeldung "Sie dürfen nicht auf diese Datei zugreifen. Überprüfen Sie app_dev.php für weitere Informationen." – dizzyd

+0

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

Antwort

11

In Ihrem Frontend-Controller (web/app.php in der Symfony Standard Edition) wird eine Instanz von erstellt. AppKernel erbt die constructor from Symfony's Kernel, das zwei Argumente erfordert:

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

$environment Der Parameter wird nur bestimmt, welche Konfiguration verwendet wird (config_dev.yml, config_prod.yml, etc.). Der Parameter $debug ist derjenige, der das Debugging aktiviert oder deaktiviert (und bestimmt daher, ob Ausnahmen angezeigt werden oder nicht).

So in app.php ändern:

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

zu

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

Dies sollte die detaillierten Sonderseiten mit benutzerfreundlichen Fehlerseite ersetzen.

+0

Das hat funktioniert! Wo finde ich $ debug auf True gesetzt? Ich folgte einem Führer als erwähnt, um "prod", "wahr" zu machen. Ist das in app_dev.php wo "dev", wahr? – dizzyd

+0

Was meinst du? Sie setzen '$ debug' auf true, wenn Sie eine neue Instanz erstellen ('$ kernel = new AppKernel ('prod', true);'). Der Konstruktor ist definiert in 'vendor/symfony/symfony/src/Symfony/Komponente/HttpKernel/Kernel.php' in Zeile 77. –

+0

Nicht '$ kernel = new AppKernel (' prod ', true); Um es in den Produktionsmodus zu setzen?Hier werde ich verwirrt. Ich folgte diesem Führer hier: http://www.livelywebdesign.com/blog/2013/05/symfony-2-application-on-shared-hosting/#comment-52147 – dizzyd