Ich habe einige PHP-Code. Wenn ich es starte, erscheint eine Warnmeldung.Entfernen Sie Warnmeldungen in PHP
Wie kann ich diese Warnmeldungen entfernen/unterdrücken/ignorieren?
Ich habe einige PHP-Code. Wenn ich es starte, erscheint eine Warnmeldung.Entfernen Sie Warnmeldungen in PHP
Wie kann ich diese Warnmeldungen entfernen/unterdrücken/ignorieren?
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);
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.
Sie können eine @ vor Ihrem Funktionsaufruf setzen, um alle Fehlermeldungen zu unterdrücken.
@yourFunctionHere();
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
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
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. –
Warnungen zu unterdrücken, während alle anderen Fehlerberichterstattung aktiviert verlassen:
error_reporting(E_ALL^E_WARNING);
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.
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
Deshalb habe ich "einige Situationen", "Warnungen sollten nicht unterdrückt werden" und "Erinnerung an mich" eingefügt. – DaveWalley
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
Wenn Sie nicht möchten, dass Warnungen zeigen, sowie Fehler verwenden
// Turn off all error reporting
error_reporting(0);
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
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);
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);
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
'E_ALL^E_WARNING', die neben Warnungen alle Fehlermeldungen ermöglicht, scheint eine bessere Wahl des Arguments für 'error_reporting' zu sein. –
im Allgemeinen stimme ich zu, in meinem Fall war das Generieren der Warnmeldung beabsichtigtes Verhalten, weil es Teil meiner Komponententests war. – pgee70