2013-08-28 6 views
9

Wie kann ich Laravel 4 oder 5 PHP Hinweise (wie undefined Variable Hinweise) zu ignorieren und nicht die ganze App nur wegen einer einfachen 'undefinierten Index oder Variable' PHP Hinweis zu brechen?Laravel bricht ganze app auf PHP Hinweise

Ich konnte dazu auf Laravel 3 setzen ein 'ignorieren' Array in Config/error.php. Aber ich kann nicht finden, wie man das in Laravel 4 oder 5 tut.

Antwort

8

Dieses Verhalten ist aufgrund der Einstellung Fehlerberichterstattung auf -1. Dies ist Laravel Standardverhalten - Linie 14 in vendor/laravel/framework/src/illuminate/Foundation/start.php sehen, wenn Sie Laravel 4 oder Linie 29 in vendor/laravel/framework/src/illuminate/Foundation/Bootstrap/HandleExceptions.php verwenden, wenn Sie verwenden Laravel 5:

error_reporting(-1); // Reports everything 

Laravel der Fehlerbehandlung respektiert Ihre error_reporting Ebene, und ignoriert alle Fehler, die Sie PHP mitteilen, nicht zu melden. Es ist erwähnenswert, dass die Änderung des Fehlerberichtslevels keine gute Idee ist. Aber die vorherige Anweisung außer Kraft setzen können Sie Ihre Fehler Reporting-Einstellungen in der app/start/global.php hinzufügen (in Laravel 4) oder app/bootstrap/app.php (in Laravel 5)

error_reporting(E_ALL^E_NOTICE); // Ignores notices and reports all other kinds 

Auch dies ist keine Lösung. Es ist nur das, wonach du verlangst. Alle Fehler, Warnungen, Hinweise usw. können und sollten behoben werden.

Sie können alle Konstanten für Fehler sehen hier berichten: http://www.php.net/manual/en/errorfunc.constants.php

Sie können weitere Informationen erhalten, wie hier error_reporting verwenden: http://php.net/manual/en/function.error-reporting.php

+0

Ich verwende diese strikten Modus zu deaktivieren, was meiner Meinung nach einer nicht-bösen Nutzung ist. Strict mode [tut sehr wenig für dich] (http://stackoverflow.com/a/25826279/1709587) an erster Stelle und wird [aus der Sprache entfernt] (https://wiki.php.net/rfc/ reclassify_e_strict) in PHP 7, zusammen mit dem vollständigen Entfernen von zwei der Warnungen, die unter diese Ebene fallen - was vor allem das völlig irrationale Verbot abstrakter statistischer Methoden im strikten Modus einschließt. Es ist eine fragwürdige Entscheidung von Laravel, E_STRICT standardmäßig zu aktivieren, meiner Meinung nach. –

+0

hinzufügen 'error_reporting (E_ALL^​​E_NOTICE); 'in' app/bootstrap/app.php' scheint nicht zu funktionieren mit Laravel 5.1 – Moppo

3

In Laravel 5.1 können Sie error_reporting(0) hinzufügen oder was auch immer Sie wollen in \ app \ Providers \ AppServiceProvider.php Boot() -Methode

+0

omg Sie haben mich so viele Stunden Arbeit gespeichert Upgrade einer alten Laravel 4.2 App –

+0

@bhuBouevidya durch Verbergen der Fehler? –

+0

@IvankaTodorova Manchmal muss man pragmatisch sein. Wenn ein Port einer alten 4.2 Laravel-App, die auf PHP 5.4 entwickelt wurde, auf php 7 und laravel 5.2 aktualisiert werden muss, und es nur noch 1 Tag gibt, dann tust du, was du tun musst. –

0

Für Laravel 5,0 Kommentar folgende Zeile

throw new ErrorException($message, 0, $level, $file, $line); 

in
Verkäufer/Laravel/Rahmen/src/Illuminate/Stiftung/Bootstrap/HandleExceptions.php

+1

* bitte beachten *: Bei Ihrem nächsten 'Composer-Update' wird der' Vendor'-Ordner überschrieben und Ihre Änderungen verschwinden. :) –