non riesco ad utilizzare la funzione per la gestione degli errori in PHP

codice:
<?php
error_reporting(E_ALL);
set_error_handler("error_handler");
function error_handler($code, $message, $filename, $lineNumber){
  echo "codice di errore: " . $code . "
";
  echo "messaggio di errore: " . $message . "
";
  echo "l'errore si è verificato nel file: " . $filename . "
";
  echo "Alla linea numero: " . $lineNumber . "
";
}

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="stile.css" />
</head>
<body>

<?php
  test();
?>


</body>
</html>
nel richiamare la funzione definita test() però mi viene mostrata la segnalazione "classica" e non quella da me costruita con la funzione error_handler assegnata poi a set_error_handler.

funziona con gli errori di tipo Notice e Warning ma non con un fatal_error come quello nell'esempio eppure ho settato error_reporting su E_ALL.

Dove sbaglio?