Como logar o erro php em um arquivo separado?

6

Acabei de atualizar meu servidor para o Fedora 17 e mesclei alguns arquivos de configuração contendo .rpmnew nos arquivos existentes. Eu tenho log com sucesso meus erros de php em um arquivo de log separado, mantendo o seguinte em php.ini :

log_errors = On
error_log = /var/log/php-errors.log

Não sei por que os erros estão sendo registrados em /var/log/httpd/error_log após a atualização, apesar de manter as configurações acima.

Além disso,

$ ls -l /var/log/php-errors.log
-rwxrwxr--. 1 apache myself 232 Dec 13 16:49 /var/log/php-errors.log

mostra que o apache possuía o arquivo de log de erros do php.

O que poderia estar causando erros do PHP no arquivo de log de erros do apache?

    
por Question Overflow 17.12.2012 / 11:50

1 resposta

0

Acho que aqui são apenas os erros genéricos do Apache que são vistos em /var/log/httpd/error_log .

Eu inseriria uma chamada para error_log('test'); em alguma lógica PHP que é conhecida por ser interpretada quando alguma página específica é atualizada, e se isso não for visto em /var/log/php-errors.log , então suspeito que as versões foram atualizadas para ter algum tipo de configuração diferente ou esquema de permissões que fez a configuração antiga parar de funcionar.

Eu recomendaria passar pela seção "Tratamento e registro de erros" em /etc/php/php.ini e verificar valores apropriados para outras diretivas. A diretiva error_reporting deve ser definida como E_ALL ou E_ALL & ~E_DEPRECATED & ~E_STRICT . A diretiva log_errors deve ser On .

Se apenas um nome de arquivo (mas nenhum caminho) for especificado para error_log , o arquivo aparecerá no mesmo diretório que o script PHP que chama error_log(...) .

Também recomendo especificar /tmp/php_error_log para error_log , atualizar a página e, em seguida, ls /tmp para ver se o arquivo está lá.

Se o arquivo não estiver lá, faça o login como root e faça uma pesquisa pelo nome do arquivo em todo o sistema de arquivos, para ver onde ele acabou.

Geralmente, a configuração adequada para fazer com que o log de erros do PHP funcione em um diretório específico, muda em diferentes versões do Apache, PHP e várias distribuições.

Eu posso dizer que no Arch Linux com Apache 2.4, PHP 5.5.11 e systemd versão 212-1 a configuração acima fará com que o log de erros do PHP acabe em algum lugar similar a /tmp/systemd-private-65d4c3e3cc534155bcf3ec708c2362f6-httpd.service-h8MSsD/tmp/php_error_log .

    
por 05.04.2014 / 02:24