error_reporting
error_reporting($uroven)
Nastaví, které druhy chyb PHP hlásí, a vrátí předchozí nastavení. Bez parametru jen vrátí současné. Jestli se chyby vypisují na stránku, určuje zvlášť display_errors.
Parametry
- $uroven – nepovinný, kombinace konstant: E_ALL (vše), E_WARNING, E_NOTICE, E_DEPRECATED… Odebírá se zápisem E_ALL & ~E_NOTICE.
Příklady
$puvodni = error_reporting();
// vše kromě upozornění a zastaralých zápisů
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
var_dump((error_reporting() & E_NOTICE) === 0); // bool(true)
var_dump((error_reporting() & E_WARNING) !== 0); // bool(true)
// vrácení původního nastavení
error_reporting($puvodni);
var_dump(error_reporting() === $puvodni); // bool(true)
// při vývoji: hlásit a vypisovat vše
// error_reporting(E_ALL);
// ini_set("display_errors", "1");
// na ostrém webu: hlásit vše, ale jen do logu
// ini_set("display_errors", "0");
// ini_set("log_errors", "1");
Na co si dát pozor
- Při vývoji mějte E_ALL. Upozornění (nedefinovaná proměnná, neexistující klíč) často prozradí skutečnou chybu.
- Na ostrém webu chyby nevypisujte (display_errors = 0), jen je zapisujte do logu. Výpis prozradí cesty na serveru a někdy i části kódu.
- Pište konstanty, ne čísla. Hodnota E_ALL se mezi verzemi PHP mění (v PHP 8.4 zmizelo E_STRICT).
- Operátor @ potlačí chybu jen u jednoho výrazu. Ve vlastní obsluze chyb ho poznáte podmínkou !(error_reporting() & $typ). Od PHP 8 vrací error_reporting() při @ jinou hodnotu než 0, proto nepoužívejte porovnání s nulou.
- Fatální chyby při překladu souboru nastavení v témže souboru neovlivní. Nastavte je v php.ini nebo .htaccess.
Příbuzné funkce:
ini_set()
ini_get()
set_error_handler()