Tratamento avançado de erros no PHP via o htaccess

htaccess

Quando se constrói uma pagina Web, se trabalharmos numa forma dinâmica e utilizamos o PHP no nosso trabalho, na fase de produção o ideal é ver todos os erros e avisos, mas quando já está na fase em que o publico têm acesso, a visualização de um erro pode ser fatal se for enviada informação que o utilizador não poderá ver, mas ao mesmo tempo o programador deverá ter acesso a esses erros.
Infelizmente alguns programadores não possuem o servidor completo e apenas o alojamento. Nesse caso não têm acesso ao ficheiro ini do PHP, o ficheiro de configuração.
Isto pode ser contornado através do ficheiro htaccess.

Prevenir que seja mostrado ao publico os erros através do htaccess

php_flag display_startup_errors off
 php_flag display_errors off
 php_flag html_errors off
 php_value docref_root 0
 php_value docref_ext 0

Preservar que a informação dos erros seja guardada

php_flag log_errors on
php_value error_log /home/path/public_html/domain/PHP_errors.log
Protect your site’s PHP error log via htaccess

Prevenir o acesso não autorizado ao ficherio dos logs

 Order allow,deny
 Deny from all
 Satisfy All

Já que estamos a trabalhar com o PHP e o htaccess vamos tirar o maior proveito disso.

Quando temos um erro no script este é constantemente repetido, se for então numa loop, é repetido varias vezes na mesma execução. O ideal é recolher a informação de um erro apenas uma vez para que seja mais fácil a leitura do log.

 php_flag ignore_repeated_errors on
 php_flag ignore_repeated_source on

Vamos agora juntar tudo para que fique tudo pronto e limpo no htaccess

# PHP error handling
 php_flag display_startup_errors on
 php_flag display_errors on
 php_flag html_errors on
 php_flag log_errors on
 php_flag ignore_repeated_errors off
 php_flag ignore_repeated_source off
 php_flag report_memleaks on
 php_flag track_errors on
 php_value docref_root 0
 php_value docref_ext 0
 php_value error_log /home/path/public_html/domain/PHP_errors.log
 php_value error_reporting 999999999
 php_value error_reporting -1
 php_value log_errors_max_len 0
 Order allow,deny
 Deny from all
 Satisfy All

Deixar uma resposta