PHP/Fehlermeldungen

Aus Foxwiki

Fehlermeldungen an-/ausschalten

Das Anzeigen von Fehlern ist fürs Debuggen sehr nützlich. Andersherum will man auch nervige PHP-Warnungen ausblenden. Dieser Artikel zeigt, wie man Fehler anzeigt und Warnungen ausschaltet.

Code zum Anzeigen aller Fehler und Warnungen

Um alle Warnungen und Infos anzuzeigen sollte relativ simpel zu machen sein und in jeder Hostumgebung funktionieren:

ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);

Code zum Anzeigen der Warnungen ohne Infos

ini_set('display_errors',1);
error_reporting(E_ALL);

Code zum Abschalten der Fehlermeldungen

error_reporting(0);

or

ini_set('display_errors',0);
error_reporting(E_ALL|E_STRICT);

Wo sollte der Code platziert werden

Die Codestücke können überall im Skript platziert werden. Jedoch sollten sie über dem Fehler platziert werden, da PHP von oben nach unten arbeitet.

Fehlermeldung Via .htaccess-Datei

Bevorzugt man die Ausgabe der Fehlermeldungen über die .htaccess-Datei kann man diesen Code verwenden:

php_flag display_errors on
php_value error_reporting 7

Quelle: https://impress.org/php-turn-on-or-off-error-reporting/


PHP-Fehlermeldungen anschalten in MAMP(Mac)

Sofern man in der php.ini-Datei das "error reporting" nicht gesetzt hat, muss man die Datei bearbeiten. Man kann aber auch in einem Skript diese folgenden Codezeilen schreiben um Fehlermeldungen anzuzeigen:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
  • Alle Meldungen (Fehler, Warnungen, Notizen) sollen gemeldet werden
  • Schaltet die Fehlermeldungen ein (Setzt man sie auf 0, werden sie abgeschaltet)

Für die, die dauerhaft Fehlermeldungen haben wollen, müssen in der php.ini-Datei nach diesen Zeilen suchen:

display_errors = on 
error_reporting = E_ALL
  • MAMP kreiert verschiedene php.ini, je nachdem welche PHP-Version man benutzt.
  • Die php.ini-Dateien findet man unter folgendem Pfad:
Applications > MAMP > conf

Wenn man nicht sicher ist, wo sich die php.ini-Datei befindet, schreibt man einen einfachen Skript, der in einem Browser läuft, um zu sehen, wo sich die php.ini befindet:

<?php
phpinfo();
?>

Hier ein Skript um Fehlermeldungen an-/auszuschalten, je nachdem, ob man debuggt oder nicht:

<?php
define('DEBUG', true); 
error_reporting(E_ALL); 
if(DEBUG == true){
display_errors(true);
log_errors(false); 
} else {
display_errors(false); 
log_errors(true); 
}

Line 2: Definiere eine Konstante DEBUG und setze sie auf 'true' Line 3: Alle Fehlermeldungen werden angezeigt Line 4: Wenn DEBUG gleich 'true' Line 5: Zeige die Fehler auf dem Bildschirm Line 6: Schalte das Fehler-Logging aus. (Macht keinen Sinn die Fehler aufzuschreiben, wenn diese auf dem Schirm angezeigt werden.) Line 8: Zeige keine Fehlermeldungen an Line 9: Schreibe die Fehler in die Log-Datei.

Typen von Fehlermeldungen

Innerhalb der php.ini-Datei (oder im Script oben) kannst du einstellen, wie genau die Fehlermeldungen sein sollen.

E_ALL             - All errors and warnings (includes E_STRICT as of PHP 5.4.0)
E_ERROR           - fatal run-time errors
E_RECOVERABLE_ERROR  - almost fatal run-time errors
E_WARNING         - run-time warnings (non-fatal errors)
E_PARSE           - compile-time parse errors
E_NOTICE          - run-time notices (these are warnings which often result from a bug in your code, but it's possible that it was intentional (e.g., using an uninitialized variable and relying on the fact it is automatically initialized to an empty string)
E_STRICT          - run-time notices, enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code
E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's initial startup
E_COMPILE_ERROR   - fatal compile-time errors
E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
E_USER_ERROR      - user-generated error message
E_USER_WARNING    - user-generated warning message
E_USER_NOTICE     - user-generated notice message
E_DEPRECATED      - warn about code that will not work in future versions of PHP
E_USER_DEPRECATED - user-generated deprecation warnings

Common settings within a php.ini file or the PHP script above include:

E_ALL (Show all errors, warnings and notices including coding standards.)
E_ALL & ~E_NOTICE  (Show all errors, except for notices)
E_ALL & ~E_NOTICE & ~E_STRICT  (Show all errors, except for notices and coding standards warnings.)
E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)

Quelle: https://www.coding.academy/blog/how-to-turn-on-php-error-reporting-in-mamp