2010-01-01 15 views

Antwort

236

Sie sollten wirklich beheben, was die Warnung verursacht, aber Sie können die Sichtbarkeit von Fehlern mit error_reporting steuern. Um Warnmeldungen zu überspringen, könnten Sie so etwas wie verwenden:

error_reporting(E_ERROR | E_PARSE); 
+32

'E_ALL^​​E_WARNING', die neben Warnungen alle Fehlermeldungen ermöglicht, scheint eine bessere Wahl des Arguments für 'error_reporting' zu sein. –

+0

im Allgemeinen stimme ich zu, in meinem Fall war das Generieren der Warnmeldung beabsichtigtes Verhalten, weil es Teil meiner Komponententests war. – pgee70

5

Sie könnten die Warnung unter Verwendung error_reporting unterdrücken, aber der viel bessere Weg ist, Ihr Skript an erster Stelle zu beheben.

Wenn Sie nicht wissen, wie, bearbeiten Sie Ihre Frage und zeigen Sie uns die betreffende Zeile und die Warnung, die angezeigt wird.

+1

keine Notwendigkeit von Skript gelöst i verwendet error_reporting (0); – Alireza

+7

Safaali, du solltest die Probleme beheben, nicht ignorieren dann. – Sampson

+2

Safaali, da Sie ein gewisses Interesse an PHP haben, tun Sie sich einen Gefallen und schauen Sie sich das Skript an. –

79

Sie können eine @ vor Ihrem Funktionsaufruf setzen, um alle Fehlermeldungen zu unterdrücken.

@yourFunctionHere(); 
+3

Dies verbirgt nur den Fehler, es passiert immer noch. Fehler machen PHP langsamer, so dass es am besten ist, den Fehler zu beheben, wenn es überhaupt möglich ist. Die Verwendung von @ verlangsamt den Code, wenn kein Fehler auftritt. http://vega.rd.no/articles/php-performance-error-suppression – dprevite

+29

Manchmal (leider) haben Sie wirklich keine Wahl. Zum Beispiel erzeugt die PHP-Funktion parse_url() Warnungen für "stark fehlerhaft formatierte" URLs - was wohl ein Fehler ist, da die Funktion in diesem Fall false zurückgibt. Sie müssen also entweder diese PHP-Warnungen in Ihrer Programmausgabe tolerieren (für Parser-/Validator-Anwendungen möglicherweise inakzeptabel sein), die Warnungen irgendwie unterdrücken oder das fehlerhafte PHP-Verhalten umgehen, indem Sie Ihren eigenen Parser/Validator für URLs schreiben. In diesem Fall wähle ich das @. – Peter

+1

WICHTIG: Verwenden Sie diese Methode, wenn (1) Sie das Problem nicht beheben können, das die Warnung erzeugt, oder (2) Ihre Warnungen durch php error_reporting vor Endbenutzern verbergen ... Das Ausblenden von Warnungen von Ihren Entwicklern ist KEINE Lösung. –

28

Warnungen zu unterdrücken, während alle anderen Fehlerberichterstattung aktiviert verlassen:

error_reporting(E_ALL^E_WARNING); 
9

Nicht gerade die Frage zu beantworten, aber ich denke, das ist ein besserer Kompromiss in einigen Situationen ist:

ich hatte Warnmeldung als Ergebnis einer printf() - Anweisung in einer Drittanbieter-Bibliothek. Ich wusste genau, was die Ursache war - ein vorübergehendes Problem, während der Dritte seinen Code korrigierte. Ich stimme zu, dass Warnungen nicht unterdrückt werden sollten, aber ich konnte meine Arbeit einem Kunden nicht mit der Warnmeldung auf dem Bildschirm zeigen. Meine Lösung:

Warnung war immer noch in der Seitenquelle als Erinnerung für mich, aber unsichtbar für den Client.

+4

Persönlich würde ich ['ob_start()'] (http://php.net/manual/en/function.ob-start.php) und ['ob_end_clean()'] (http: // php. net/manual/de/function.ob-end-clean.php) statt. Auf diese Weise wird das Zeug nicht einmal an den Browser gesendet (was es hier tut). – h2ooooooo

+6

Deshalb habe ich "einige Situationen", "Warnungen sollten nicht unterdrückt werden" und "Erinnerung an mich" eingefügt. – DaveWalley

+1

Bevor ich mich weiter abstimmen lasse, lies bitte meine Antwort. Beachten Sie "Drittanbieter", "Kompromiss" und den obigen Kommentar. Ich fügte diese Antwort hinzu, falls jemand anders in derselben Situation ist, in der ich mich befand, und in dieser speziellen Situation rettete dies mich, während alle anderen Antworten nicht so gut gewesen wären. Nächstes Mal werde ich zweimal darüber nachdenken, hilfreich zu sein. – DaveWalley

15

Wenn Sie nicht möchten, dass Warnungen zeigen, sowie Fehler verwenden

// Turn off all error reporting 
error_reporting(0); 

Error Reporting - PHP Manual

4

Ich denke, dass eine bessere Lösung ist Konfiguration von .htaccess Auf diese Weise Sie von Code nicht ändern müssen Anwendung. Hier sind Richtlinien für Apache2

php_flag display_startup_errors off 
php_flag display_errors off 
php_flag html_errors off 
php_value docref_root 0 
php_value docref_ext 0 
4

in Core-Php zu verbergen Warnmeldung gesetzt error_reporting (0) an der Spitze der gemeinsamen Datei oder einzelne Datei enthalten.

In Wordpress hide Warnings and Notices Add folgenden Code in Datei wp-config.php

ini_set('log_errors','On'); 
ini_set('display_errors','Off'); 
ini_set('error_reporting', E_ALL); 
define('WP_DEBUG', false); 
define('WP_DEBUG_LOG', true); 
define('WP_DEBUG_DISPLAY', false); 
1

Wenn Sie die Warnungen und einige andere Fehlertypen zu unterdrücken wollen (zB Mitteilungen), während alle anderen Fehler anzuzeigen, können Sie tun:

error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE); 
0

Ich mache es so in meinem php.ini:

error_reporting = E_ALL & ~ E_WARNING & ~ E_NOTICE & ~ E_STRICT & ~ E_DEPRECATED

die nur schwerwiegende Fehler protokolliert und keine Warnungen

+0

Wenn dies keine Antwort ist, sollte es entweder als Kommentar oder eine andere Frage – Robert

+0

Robert.This ist eine Antwort. – navid