Pour connaitre la dernière erreur du PHP (même si la fonction a été bloquée par un @), il faut utiliser la variable pré-définie $php_errormsg. Celle-ci contient le dernier message d'erreur si track_errors est défini dans php.ini.
http://fr.php.net/manual/en/reserved.variables.phperrormsg.php