error_reporting în PHP

Setează ce tipuri de erori raportează PHP (sau doar citește setarea curentă).

Sintaxă
error_reporting(?int $error_level = null): int

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 exemplu file_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.