Ce face error_reporting
Fiecare tip de eroare are o constantă: E_ERROR, E_WARNING, E_NOTICE, E_DEPRECATED și altele. E_ALL înseamnă toate. Le combini cu operatorii pe biți: E_ALL & ~E_DEPRECATED înseamnă „toate, mai puțin deprecated”.
Pe calculatorul tău, în timpul dezvoltării, folosește error_reporting(E_ALL) împreună cu ini_set("display_errors", "1"), ca să vezi orice problemă. Pe site-ul public lasă raportarea pornită, dar oprește afișarea (display_errors=0) și scrie erorile în jurnal (log_errors=1).
Fără parametru, funcția doar returnează nivelul curent. Cu parametru, setează nivelul nou și returnează nivelul vechi.
Parametri
| Parametru | Descriere |
|---|---|
$error_level |
Opțional. Noul nivel, de exemplu E_ALL. |
Ce returnează
Nivelul de raportare dinainte de apel, ca număr.
Exemple
Exemplul 1: Setare și citire
<?php
error_reporting(E_ALL);
var_dump(error_reporting() === E_ALL);
$vechi = error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
var_dump($vechi === E_ALL);
var_dump((bool) (error_reporting() & E_WARNING));
var_dump((bool) (error_reporting() & E_NOTICE));
Rezultat
bool(true)
bool(true)
bool(true)
bool(false)
Exemplul 2: Setări uzuale la începutul aplicației
<?php
$dezvoltare = true;
error_reporting(E_ALL);
ini_set("display_errors", $dezvoltare ? "1" : "0");
ini_set("log_errors", "1");
echo "display_errors = " . ini_get("display_errors");
Rezultat
display_errors = 1
Greșeli frecvente
- Ascunzi erorile cu
error_reporting(0)ca „să nu mai apară”. Problemele rămân, doar că nu le mai vezi. Rezolvă cauza și oprește doar afișarea pe site-ul public. - Folosești operatorul
@în fața funcțiilor ca să ascunzi avertismente. Este greu de depanat; verifică explicit condițiile (de exemplufile_exists).
Comenzi înrudite
set_error_handler: Înlocuiește tratarea standard a avertismentelor și notificărilor PHP cu o funcție scrisă de tine.trigger_error: Generează un mesaj de eroare de nivel utilizator (notificare, avertisment, deprecated), ca cele produse de PHP.error_log: Scrie un mesaj în jurnalul de erori al serverului sau într-un fișier ales de tine.