{
"path": "/2014/08/14/guardar-os-erros-php-num-ficheiro-com-o-htaccess/",
"site": "at://did:plc:xsx3bphrwkgeo3qnfjhzmdra/site.standard.publication/3me7k4wsueo2b",
"tags": [
"php",
"portugues"
],
"$type": "site.standard.document",
"title": "Guardar os Erros do PHP num Ficheiro Com o .htaccess",
"description": "Explicamos como fazer a listagem em log de todos os erros produzidos pela linguagem PHP num ficheiro através do .htaccess.",
"publishedAt": "2014-08-14T10:41:38Z",
"textContent": "Quando os programadores de soluções web estão a programar alguma aplicação é normal que possam surgir erros durante o desenvolvimento e a linguagem de programação, por norma, mostra-os no browser. Mesmo depois do desenvolvimento concluído e do produto lançado, podem surgir erros porém é pouco profissional mostrar os erros \"à paisana\" no browser do utilizador sendo até uma boa \"ajuda\" para hackers. Hoje vamos explicar como podemos utilizar o ficheiro .htaccess para fazer o registo em log (logging) dos erros dados pela linguagem de programação PHP num ficheiro. Como devem ter previsto, o único ficheiro que é necessário modificar é o .htaccess. Vamos começar por definir algumas phpflags de forma a não mostrar nenhum erro ao utilizador. Não mostra erros de inicialização phpflag displaystartuperrors off Não mostra os restantes erros phpflag displayerrors off Não mostra erros de markup HTML phpflag htmlerrors off O código acima, e o restante, está comentado para saber o que faz cada linha. Agora, depois de termos desativado os erros \"ao público\", vamos fazer com que estes sejam guardados num ficheiro. Ativa o registo em log dos erros phpflag logerrors on Desativa a ignoração a erros repetidos phpflag ignorerepeatederrors off # Desativa \"Ignorar erros de fonte única\" phpflag ignorerepeatedsource off Ativa log de vazamentos de memória do php phpflag reportmemleaks on Preserva os erros mais recentes phpflag trackerrors on Desativa a formatação de erros com links de referência phpvalue docrefroot 0 phpvalue docrefext 0 Especifica um caminho para o ficheiro de log phpvalue errorlog /home/error.log Especifica para guardar todos os erros phpvalue errorreporting -1 Desativa o tamanho máximo de erros phpvalue logerrorsmaxlen 0 Agora os erros já estão a ser guardados num ficheiro de log, mas continua a existir um problema. Se acedermos ao URL onde está guardado, vamos poder aceder ao ficheiro. Isto pode ser utilizado como arma por qualquer pessoa, nomeadamente por hackers. Vamos então proteger o ficheiro de forma a que o público não lhe tenha acesso. Proteger o ficheiro Order allow,deny Deny from all Satisfy All Não se esqueçam de colocar o nome do ficheiro correto substituindo error.log pelo nome que querem. Alerto também para alterarem o caminho /home/error.log para o caminho em questão. Aqui está o código completo sem qualquer comentário, excelente para ser utilizado: phpflag displaystartuperrors off phpflag displayerrors off phpflag htmlerrors off phpflag logerrors on phpflag ignorerepeatederrors off phpflag ignorerepeatedsource off phpflag reportmemleaks on phpflag trackerrors on phpvalue docrefroot 0 phpvalue docrefext 0 phpvalue errorlog /home/error.log phpvalue errorreporting -1 phpvalue logerrorsmax_len 0 Order allow,deny Deny from all Satisfy All Depois de fazerem as edições no caminho e nome do ficheiro, basta guardarem o vosso .htaccess e verificam que os erros produzidos pelo PHP irão ser salvos no ficheiro em questão. Acrescento que, a qualquer momento, pode utilizar a função Espero que este artigo vos tenha ajudado :) Edição: Tal como o leitor António mencionou, isto apenas funciona caso o PHP tenha o módulo do Apache ativo."
}