set_error_handler
funkcja
Rejestruje własną funkcję obsługi błędów PHP, zastępując domyślne zachowanie. Zwraca poprzedni handler lub null.
set_error_handler(?callable $callback, int $error_levels = E_ALL): ?callable
set_error_handler pozwala ci przejąć kontrolę nad tym, co dzieje się, gdy PHP napotka błąd. Zamiast domyślnego komunikatu na ekranie możesz zapisać błąd do pliku, wysłać powiadomienie albo rzucić wyjątek. Twoja funkcja otrzymuje kod błędu, opis, ścieżkę do pliku i numer linii.
Ważne: handler nie przechwytuje błędów krytycznych (E_ERROR, E_PARSE) — od tego jest register_shutdown_function. Przekazanie null przywraca domyślny handler PHP.
<?php
declare(strict_types=1);
set_error_handler(function (int $errno, string $errstr, string $errfile, int $errline): bool {
echo sprintf('[%d] %s w %s:%d' . PHP_EOL, $errno, $errstr, $errfile, $errline);
return true; // true = PHP nie uruchamia własnej obsługi
});
trigger_error('Coś poszło nie tak', E_USER_WARNING);
echo 'Skrypt kontynuuje.' . PHP_EOL;
// [512] Coś poszło nie tak w skrypt.php:10
// Skrypt kontynuuje.