Notice: Constant DIR_FS_CATALOG already defined
Ich habe schon auf Kommentar display_errors
in php.ini
, aber funktioniert nicht.
Wie kann ich PHP dazu bringen, solche Dinge nicht an Browser auszugeben?
AKTUALISIEREN
Ich habe es display_errors = Off
dort abgelegt, aber es werden immer noch solche Mitteilungen gemeldet.
Ist das ein Problem mit PHP 5.3?
Berichterstattung über zahlreiche Call Stack auch ..
php
error-handling
constants
user198729
quelle
quelle
grep display_errors /path/to/php.ini
zu sehen, ob Ihre Zeile irgendwo in der Datei überschrieben wird. Das ist mir passiert.ini_set('display_errors',0)
in Ihrer PHP-Datei. Wennphpinfo()
Ihre INI-Einstellungen nicht funktionieren, sollten Sie überprüfen, ob Ihr gewünschter Wert angezeigt wird. Wenn nicht, haben Sie entweder die falsche INI-Datei geändert oder etwas überschreibt Ihre Werte von php.iniAntworten:
Sie können festlegen ,
display_errors
auf0
oder die Verwendungerror_reporting()
Funktion.Mitteilungen sind jedoch ärgerlich (ich kann teilweise mitfühlen ), aber sie erfüllen einen Zweck. Sie sollten eine Konstante nicht zweimal definieren, das zweite Mal funktioniert nicht und die Konstante bleibt unverändert!
quelle
display_errors
funktioniert nicht wie erwartet.phpinfo()
zu sehen, ob die Einstellung tatsächlich gilt. Verzeihen Sie mir, aber ich bezweifle stark, dass Sie einen Fehler in PHP 5.3 gefunden haben - ich werde es nur glauben, wenn ich es sehe :)local value
ist an, aber dasmaster value
ist aus, weiß nicht, was das genau bedeutet ...ini_set
Anweisungen oderphp_ini_flag
Einstellungen in.htaccess
Dateien stammen.Aus der PHP-Dokumentation ( error_reporting ):
Weitere interessante Optionen für diese Funktion:
quelle
Für die Kommandozeile PHP setzen
im
/etc/php5/cli/php.ini
Die Befehlsausführung lässt
php
dann die Benachrichtigungen aus.quelle
Quelle http://php.net/manual/en/function.error-reporting.php
quelle
Verwendete diese Zeile in Ihrem Code
Ich denke, es ist voll für dich.
quelle
Du suchst nach:
quelle
/usr/bin/php -d error_reporting="E_ERROR | E_WARNING | E_PARSE" -f /path/to/file.php
für meine crontabIch ziehe es vor, das
error_reporting
Innere meines Codes nicht festzulegen. Aber in einem Fall, einem Legacy-Produkt, gibt es so viele Hinweise, dass sie ausgeblendet werden müssen.Also habe ich das folgende Snippet verwendet, um den serverseitig konfigurierten Wert für s festzulegen,
error_reporting
aber dasE_NOTICE
s zu subtrahieren .Jetzt kann die Einstellung für die Fehlerberichterstattung in
php.ini
oder weiter konfiguriert werden.htaccess
. Nur Benachrichtigungen werden immer deaktiviert.quelle
Sie können
ini_set('display_errors',0);
in Ihrem Skript festlegen oder definieren, mit welchen Fehlern Sie anzeigen möchtenerror_reporting()
.quelle
ini_set
hier erwähnte Methode verwenden, die anerror_reporting(0)
anderer Stelle erwähnte Methode hatte keine Wirkung.indem Sie die Fehler nicht verursachen:
Wenn Sie es wirklich müssen, ändern Sie die Fehlerberichterstattung mit error_reporting () in E_ALL ^ E_NOTICE.
quelle
Für PHP-Code:
Für die
php.ini
Konfiguration:quelle
Ich habe diesen Trick kürzlich herausgefunden. Schlagen Sie ein @ am Anfang einer Zeile, die eine Warnung / einen Fehler erzeugen kann.
Wie durch Zauberei verschwinden sie.
quelle
Verwenden Sie phpinfo () und suchen Sie nach
Configuration File (php.ini) Path
nach dem Konfigurationsdateipfad für PHP. PHP kann je nach Umgebung mehrere Konfigurationsdateien haben. Normalerweise ist es für die Konsole:/etc/php5/cli/php.ini
und für PHP, das von Apache ausgeführt wird, ist es:
/etc/php5/apache2/php.ini
Und stellen Sie dann
error_reporting
den Weg ein, den Sie brauchen:http://www.phpknowhow.com/configuration/php-ini-error-settings/ http://www.zootemplate.com/news-updates/how-to-disable-notice-and-warning-in-phpini- Datei
quelle
Wie von einigen erwähnt und wenn Sie der Code-Autor sind, sollten Sie all diese Fehler, Hinweise usw. korrigieren, da dies langfristig mehr Probleme für Sie verursacht, als sie nicht zu beheben (insbesondere, wenn Sie Ihr Betriebssystem aktualisieren). Für Ihren Server sollten Fehler nur in Ihren Protokollen angezeigt werden, nicht auf dem Bildschirm des Clients.
Um die Fehler in Ihrem Browser zu vermeiden, verwenden Sie das
display_errors
Flag, wie Sie es bereits gefunden haben:Das eigentliche Problem ist jetzt, wenn Sie einen anderen Code ausführen. In diesem Fall wird das Ändern des Codes wahrscheinlich jedes Mal überschrieben, wenn Sie diesen Code aktualisieren. Es macht es mühsam, diesen Code zu pflegen.
In meinem Fall führe ich PHP mit aus
crontab
, damit daswp-cron.php
Skript gelegentlich ausgeführt wird. Ich habe Fehler an meine E-Mails gesendet bekommen, was mühsam wird, wenn Sie alle 10 Minuten eine E-Mail erhalten! In diesem Fall enthält das Wordpress-System jedoch eine Konfigurationsdatei, die a enthält,WP_DEBUG
und sie rufen dieerror_reporting()
Funktion auf, sodass der Versuch, dieerror_reporting
Variable in der Befehlszeile zu ändern, nicht funktioniert. Stattdessen müssen Sie diewp-config.php
Datei im Stammordner bearbeiten und sicherstellen, dass aufWP_DEBUG
gesetzt istfalse
. Andernfalls erhalten Sie ständig alle diese Warnungen und Hinweise.quelle
Sie können überprüfen, ob die Konstante bereits definiert ist, indem Sie:
quelle
Ich glaube, dass das Auskommentieren von display_errors in der php.ini nicht funktioniert, da der Standardwert On ist. Sie müssen es stattdessen auf "Aus" setzen.
Vergessen Sie nicht, Apache neu zu starten, um Konfigurationsänderungen zu übernehmen.
Beachten Sie auch, dass Sie zwar zur Laufzeit display_errors festlegen können, eine Änderung hier jedoch keine Auswirkungen auf FATAL-Fehler hat.
Wie von anderen angemerkt, sollten Sie idealerweise während der Entwicklung mit error_reporting auf der höchstmöglichen Ebene und aktivierten display_errors ausgeführt werden. Diese Fehler, Warnungen, Hinweise und strengen Codierungshinweise sind beim ersten Start zwar ärgerlich, summieren sich jedoch und ermöglichen es Ihnen, ein besserer Codierer zu werden.
quelle
Doppelte definierte Konstanten
Um den spezifischen Fehler hier zu beheben, können Sie überprüfen, ob eine Konstante bereits definiert ist, bevor Sie sie definieren:
Ich persönlich würde mit einer Suche in der Codebasis nach der Konstante beginnen
DIR_FS_CATALOG
und dann die doppelte Definition durch diese ersetzen.Ausblenden von PHP-Hinweisen inline von Fall zu Fall
PHP bietet die
@
Fehlerkontrolloperator, mit dem Sie bestimmte Funktionen ignorieren können, die Hinweise oder Warnungen verursachen.Auf diese Weise können Sie Benachrichtigungen und Warnungen in Ihrem Code von Fall zu Fall ignorieren / deaktivieren. Dies kann hilfreich sein, wenn ein Fehler oder eine Benachrichtigung beabsichtigt, geplant oder einfach nur ärgerlich ist und an der Quelle nicht behoben werden kann . Platzieren Sie eine
@
vor die Funktion oder Variable, die einen Hinweis verursacht, und es wird ignoriert.Hier ist ein Beispiel:
Weitere Informationen hierzu finden Sie in den PHP- Dokumenten zu Error Control Operators .
quelle