it-swarm.com.de

Wie schalte ich PHP Hinweise aus?

Notice: Constant DIR_FS_CATALOG already defined

Ich habe bereits auskommentiert display_errors in php.ini, funktioniert aber nicht.

Wie mache ich PHP um solche Dinge nicht an Browser auszugeben?

[~ # ~] Update [~ # ~]

Ich legte display_errors = Off dort, aber es meldet immer noch solche Hinweise,

Ist dies ein Problem mit PHP 5.3?

Es werden auch zahlreiche Call-Stacks gemeldet.

112
user198729

Sie können display_errors Auf 0 Setzen oder die Funktion error_reporting() verwenden.

Nachrichten sind jedoch ärgerlich (ich kann teilweise sympathisieren ), aber sie dienen einem Zweck. Sie sollten keine Konstante zweimal definieren, das zweite Mal funktioniert nicht und die Konstante bleibt unverändert!

74
Pekka 웃

Aus der PHP Dokumentation ( error_reporting ):

<?php
// Turn off all error reporting
error_reporting(0);
?>

Andere interessante Optionen für diese Funktion:

<?php

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL & ~E_NOTICE);
// For PHP < 5.3 use: E_ALL ^ E_NOTICE

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

?>
223
Cristian

Für die Kommandozeile PHP setzen

error_reporting = E_ALL & ~E_NOTICE

im /etc/php5/cli/php.ini

die Ausführung des Befehls php ignoriert dann die Hinweise.

31
Paul Salber
<?php

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

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

?>

source http://php.net/manual/en/function.error-reporting.php

20
Abhishek Goel

Verwendete diese Zeile in Ihrem Code

error_reporting(E_ALL ^ E_NOTICE);  

Ich denke, es ist hilfreich für dich.

11
vicky mahale

Du suchst nach:

php -d error_reporting="E_ERROR | E_WARNING | E_PARSE"
4

Sie können ini_set('display_errors',0); in Ihrem Skript festlegen oder mit error_reporting() definieren, welche Fehler Sie anzeigen möchten.

4
jeroen

indem Sie die Fehler nicht verursachen:

defined('DIR_FS_CATALOG') || define('DIR_FS_CATALOG', 'whatever');

Wenn Sie wirklich müssen, ändern Sie die Fehlerberichterstattung mit error_reporting () in E_ALL ^ ​​E_NOTICE.

3
Jonathan Kuhn

Für PHP Code:

<?php
error_reporting(E_ALL & ~E_NOTICE);

Zum php.ini config:

error_reporting = E_ALL & ~E_NOTICE
2
Nabi K.A.Z.

Ich glaube, dass das Auskommentieren von display_errors in php.ini nicht funktioniert, da die Standardeinstellung Ein ist. Sie müssen es stattdessen auf "Aus" setzen.

Vergessen Sie nicht, Apache neu zu starten, um die Konfigurationsänderungen zu übernehmen.

Beachten Sie auch, dass Sie display_errors zur Laufzeit festlegen können, eine Änderung hier jedoch keine Auswirkungen auf FATAL-Fehler hat.

Wie von anderen angemerkt, sollten Sie im Idealfall während der Entwicklung error_reporting auf der höchstmöglichen Ebene ausführen und display_errors aktivieren. Diese Fehler, Warnungen, Hinweise und strengen Codierungshinweise sind ärgerlich, wenn Sie zum ersten Mal anfangen, und ermöglichen es Ihnen, ein besserer Codierer zu werden.

0
AllenJB

Verwenden Sie phpinfo () und suchen Sie nach Configuration File (php.ini) Path, um zu sehen, welcher Konfigurationsdateipfad für php verwendet wird. PHP kann abhängig von der Umgebung, in der es ausgeführt wird, mehrere Konfigurationsdateien haben. Für Konsolen gilt normalerweise Folgendes:

/etc/php5/cli/php.ini

und für PHP von Apache ist es:

/etc/php5/Apache2/php.ini

Und dann setze error_reporting so wie du es brauchst:

http://www.phpknowhow.com/configuration/php-ini-error-settings/http://www.zootemplate.com/news-updates/how-to-disable -notice-and-warning-in-phpini-datei

0
MilanG

Ich habe diesen Trick kürzlich herausgefunden. Setzen Sie am Anfang einer Zeile ein @, das eine Warnung/einen Fehler auslösen kann.

Wie von Zauberhand verschwinden sie.

0
DrLazer

Wie von einigen erwähnt und wenn Sie der Autor des Codes sind, sollten Sie alle diese Fehler, Hinweise usw. korrigieren, da dies mehr Probleme für Sie mit sich bringt, als sie zu beheben (insbesondere, wenn Sie Ihr Betriebssystem aktualisieren). Auf Ihrem Server sollten Fehler nur in Ihren Protokollen angezeigt werden, nicht auf dem Bildschirm des Clients.

Um Fehler in Ihrem Browser zu vermeiden, verwenden Sie das Flag display_errors, Wie Sie es bereits gefunden haben:

display_errors = Off

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 crontab aus, damit das wp-cron.php - Skript ab und zu ausgeführt wird. Es wurden Fehler an meine E-Mails gesendet, die wird mühsam, wenn Sie alle 10 Minuten eine E-Mail erhalten! In diesem Fall enthält das Wordpress System eine Konfigurationsdatei mit einem WP_DEBUG und ruft die Funktion error_reporting() Die Funktion, mit der versucht wird, die Variable error_reporting in der Befehlszeile zu ändern, funktioniert nicht. Stattdessen müssen Sie die Datei wp-config.php im Stammordner bearbeiten und sicherstellen, dass der Wert WP_DEBUG ist auf false gesetzt, andernfalls erhalten Sie ständig alle Warnungen und Hinweise.

0
Alexis Wilke

Ich bevorzuge es, das error_reporting In meinem Code nicht zu setzen. Aber in einem Fall, einem Altprodukt, gibt es so viele Hinweise, dass sie verborgen bleiben müssen.

Also habe ich folgendes Snippet verwendet, um den serverseitig konfigurierten Wert für error_reporting Festzulegen und die E_NOTICE Zu subtrahieren.

error_reporting(error_reporting() & ~E_NOTICE);

Jetzt kann die Fehlerberichterstattungseinstellung in php.ini Oder .htaccess Weiter konfiguriert werden. Nur Benachrichtigungen werden immer deaktiviert.

0
algorhythm

Sie können überprüfen, ob die Konstante bereits definiert ist:

<?php
if (!defined('MYCONST'))
    define('MYCONST', 'Weeha!');
?>
0
Thiago Belem