Resolver problemas

Ativar o registo de erros do PHP a partir do ficheiro .htaccess

Revisto a 2 min de leitura depuração PHP

Por predefinição, a apresentação de erros do PHP está desativada e deve permanecer assim em produção. Mostrar erros ao visitante pode revelar caminhos, consultas e detalhes de configuração; reproduza a falha em staging sempre que possível.

O procedimento habitual na Hostsuar é ativar temporariamente log_errors para a versão efetiva a partir de Select PHP Version. Se precisar de limitar a configuração à árvore de um diretório e tiver verificado que o controlador admite diretivas PHP no .htaccess, registe os erros num ficheiro privado fora de public_html:

php_flag display_errors Off
php_flag log_errors On
php_value error_log /home/CPANEL_USUARIO/logs/php-debug.log

Substitua CPANEL_USUARIO, crie previamente o diretório e proteja o registo com permissões 0600. Aceda apenas à operação que falha e reveja o registo, sem ativar a saída de erros no ecrã.

Ao terminar o teste, elimine obrigatoriamente as diretivas acrescentadas, confirme que display_errors continua em Off e apague o registo quando deixar de ser necessário. Se, ao acrescentá-las, aparecer um erro 500, retire-as e consulte o registo de erros do site. Só uma mensagem que identifique php_flag ou php_value como diretiva inválida ou não permitida confirma que o controlador não as admite; o erro 500 por si só não identifica a causa.

Se o registo continuar vazio

Confirme que o processo PHP consegue escrever no diretório privado e que está a consultar a configuração do site afetado, e não outra versão do PHP ou o CLI. log_errors não ativa por si só todos os níveis: error_reporting determina quais são registados e a aplicação pode alterá-lo.

Conserve os valores anteriores para os restaurar. Se precisar de alargar os níveis, faça-o temporariamente na configuração compatível com esse controlador e reproduza uma única operação; não encha o disco registando avisos de todas as visitas. Um registo vazio também pode indicar que a falha ocorre antes do PHP ou noutro serviço.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.