Ich habe PHP-Code. Wenn ich es ausführe, wird eine Warnmeldung angezeigt.
Wie kann ich diese Warnmeldungen entfernen / unterdrücken / ignorieren?
php
warnings
error-reporting
Alireza
quelle
quelle
Antworten:
Sie sollten wirklich alles beheben, was die Warnung verursacht, aber Sie können die Sichtbarkeit von Fehlern mit steuern
error_reporting()
. Um Warnmeldungen zu überspringen, können Sie Folgendes verwenden:quelle
E_ALL ^ E_WARNING
Die Aktivierung aller Fehlerberichte außer Warnungen scheint eine bessere Wahl für das Argument zu seinerror_reporting
.Sie können ein @ vor Ihren Funktionsaufruf setzen, um alle Fehlermeldungen zu unterdrücken.
quelle
dns_get_record
werden Warnungen auslösen. Ihr Code kann die Warnung kompensieren, wirft sie aber trotzdem aus. Das Deaktivieren der Fehlerberichterstattung funktioniert auf dem Produktionsserver, jedoch nicht auf dem Entwicklungsserver. Wenn Sie XML-Inhalte generieren, wird der Browser durch die Warnung nicht gerendert, da der Server aufgrund der Warnung fehlerhaftes XML sendet. Manchmal möchten Sie dies bei der Entwicklung, aber nicht für etwas, das durch einen vorübergehenden DNS-Suchfehler verursacht wird, den Sie bereits kompensieren.So unterdrücken Sie Warnungen, während alle anderen Fehlerberichte aktiviert bleiben:
quelle
Wenn Sie keine Warnungen sowie Fehler anzeigen möchten, verwenden Sie
Fehlerberichterstattung - PHP-Handbuch
quelle
Wenn Sie die Warnungen und einige andere Fehlertypen (z. B. Hinweise) unterdrücken möchten, während Sie alle anderen Fehler anzeigen, haben Sie folgende Möglichkeiten:
quelle
Um die Warnmeldung in Core Php auszublenden, setzen Sie error_reporting (0) oben auf die allgemeine Include-Datei oder einzelne Datei.
Fügen Sie in Wordpress Warnungen und Hinweise ausblenden folgenden Code in die Datei wp-config.php ein
quelle
Die Frage nicht genau beantworten, aber ich denke, dies ist in einigen Situationen ein besserer Kompromiss:
Ich hatte eine Warnmeldung als Ergebnis einer printf () - Anweisung in einer Bibliothek eines Drittanbieters. Ich wusste genau, was die Ursache war - eine vorübergehende Umgehung, während die Drittanbieter ihren Code reparierten. Ich bin damit einverstanden, dass Warnungen nicht unterdrückt werden sollten, aber ich konnte meine Arbeit einem Kunden nicht demonstrieren, wenn die Warnmeldung auf dem Bildschirm angezeigt wurde. Meine Lösung:
Die Warnung war noch in der Seitenquelle als Erinnerung für mich, aber für den Kunden unsichtbar.
quelle
ob_start()
undob_end_clean()
stattdessen verwenden. Auf diese Weise wird das Zeug nicht einmal an den Browser gesendet (was hier der Fall ist).Ich mache es wie folgt in meiner php.ini :
Dies protokolliert nur schwerwiegende Fehler und keine Warnungen.
quelle
Ich denke, dass eine bessere Lösung die Konfiguration von .htaccess ist. Auf diese Weise müssen Sie den Anwendungscode nicht ändern. Hier sind Anweisungen für Apache2
quelle
Sie können die Warnung mit error_reporting unterdrücken aber der viel bessere Weg ist, Ihr Skript zuerst zu reparieren.
Wenn Sie nicht wissen wie, bearbeiten Sie Ihre Frage und zeigen Sie uns die betreffende Zeile und die angezeigte Warnung.
quelle
Es gibt bereits eine Antwort mit dem Error Control Operator, aber es fehlt eine Erklärung. Sie können den
@
Operator für jeden Ausdruck verwenden und er verbirgt Fehler (mit Ausnahme schwerwiegender Fehler).Zum Debuggen ist es eine schnelle und perfekte Methode. Sie sollten es jedoch niemals in der Produktion verwenden oder dauerhaft in Ihre lokale Version aufnehmen. Es wird Ihnen eine Menge unnötiger Irritationen bereiten.
Sie sollten stattdessen Folgendes berücksichtigen:
1. Fehlerberichtseinstellungen wie in der akzeptierten Antwort angegeben.
oder aus den PHP INI-Einstellungen
2. Ausnahmen abfangen
quelle
Verwenden Sie dieses Beispiel oben in Ihrem Code, um alle Warnungen zu ignorieren:
quelle