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:
error_reporting(E_ERROR | E_PARSE);
E_ALL ^ E_WARNING
Die Aktivierung aller Fehlerberichte außer Warnungen scheint eine bessere Wahl für das Argument zu sein error_reporting
.
Sie können ein @ vor Ihren Funktionsaufruf setzen, um alle Fehlermeldungen zu unterdrücken.
@yourFunctionHere();
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.
Wenn Sie keine Warnungen sowie Fehler anzeigen möchten, verwenden Sie
// Turn off all error reporting
error_reporting(0);
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
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);
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:
printf('<div style="display:none">');
...Third-party stuff here...
printf('</div>');
Die Warnung war noch in der Seitenquelle als Erinnerung für mich, aber für den Kunden unsichtbar.
ob_start()
und ob_end_clean()
stattdessen verwenden. Auf diese Weise wird das Zeug nicht einmal an den Browser gesendet (was hier der Fall ist).
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
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
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.
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).
@$test['test']; //PHP Notice: Undefined variable: test
@(14/0); // PHP Warning: Division by zero
//This is not working. You can't hide Fatal Errors this way.
@customFuntion(); // PHP Fatal error: Uncaught Error: Call to undefined function customFuntion()
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.
error_reporting(E_ERROR | E_PARSE);
oder aus den PHP INI-Einstellungen
ini_set('display_errors','Off');
2. Ausnahmen abfangen
try {
$var->method();
} catch (Error $e) {
// Handle error
echo $e->getMessage();
}