en el vhost del apache:
php_flag display_errors Off
php_flag log_errors On
php_value error_log "/home/logs/error-php.log"
También se puede hacer lo mismo en el php.ini
display_errors = Off
log_errors = On
A nivel de programador:
PHP:
error_reporting(E_ALL);
Con éste estamos definiendo que queremos que PHP nos reporte todos los errores. Ojo que el E_ALL no incluye el E_STRICT. Por otro lado, aviso que al mostrarse todos los errores van a aparecer multitud! Veamos otra forma:
PHP:
error_reporting(E_ERROR | E_WARNING | E_PARSER);
Esta vez estamos definiendo que queremos que nos muestren los errores, las advertencias y los fallos de parseo. Aquí por ejemplo nos libramos de los Notice, que son los típicos de no inicializar variables, etc.
El que usualmente viene por defecto es:
PHP:
error_reporting(E_ALL ^ E_NOTICE);
Éste nos va a mostrar todos los errores excepto el Notice. Nótese el carácter ^, que significa excepto.
Más info:
http://es2.php.net/manual/es/function.error-reporting.php