PHP Fehlermeldungen abschalten.

CheeseCakeMen

Cadet 3rd Year
Registriert
Feb. 2021
Beiträge
42
Wenn ich meine Seite online schalte, hatte ich geplant alle Fehlermeldungen nicht anzeigen zu lassen, damit mögliche Angreifer es nicht noch einfacher haben.

Reicht es aus, wenn ich in meiner index.php alle Fehlermeldungen abschalte? Oder gibt es noch weitere Dinge (außer Nutzereingaben zu überpüfen) auf welche ich achten sollte?
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
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);

// Report all PHP errors
error_reporting(E_ALL);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
 
Das kommt natürlich darauf an, wie der Rest deines Codes aussieht. Wenn immer alles über die index.php inkludiert wird, reicht das. Navigierst du von index.php auf andere Seiten, musst du den selben Code auch dort reinkopieren.
 
Wenn möglich direkt in der php.ini konfigurieren. Du willst aber nicht die Fehlermeldungen abschalten (die sind ja auch sicherheitsrelevant, zeigen dir Programmierfehler auf und warnen vor Funktionen die es in späteren PHP-Versionen nicht mehr gibt), sondern die Ausgabe von Fehlern und stattdessen alles loggen.

Code:
error_reporting = E_ALL
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = php-errors.log
 
  • Gefällt mir
Reaktionen: ###Zaunpfahl### und netzgestaltung
Ja über die index.php wird der Rest inkludiert.

@Marco01_809
Mit deinem Code Beispiel werden die Fehler dann nur noch im php-errors.log gespeichert, aber nicht mehr für die User angezeigt, oder ?

Bin bei all-inkl.com da kann ich die php.ini nicht direkt bearbeiten.
 
Ja, außer die Anwendung die du betreibst überschreibt irgendwelche der Direktiven mit ini_set() oder hat einen eigenen error_handler gesetzt der diese Einstellungen nicht berücksichtigt.
 
Danke, allerdings kann ich meine php.ini Datei nicht verändern, da ich bei all-inkl.com bin
Was soll ich machen?
 
Schreib das in die index.php, das reicht i.d.R.
Code:
error_reporting(0);
ini_set('display_errors', '0');
 
Im Zweifel irgendwo ein phpinfo() hin und gucken, ob man irgendwo eine eigene Ini in den Suchpfad setzen kann.
Wäre sauberer als ini_set.
 
Zurück
Oben