php escrevendo erros preteridos no log de erros do apache

7

Acabei de atualizar do Debian Lenny para o Squeeze e notei que meu /var/log/apache2/errors.log está sendo bombardeado com os seguintes erros:

<b>Warning</b>:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in <b>Unknown</b> on line <b>0</b><br />
<br />
<b>Warning</b>:  Directive 'register_globals' is deprecated in PHP 5.3 and greater in <b>Unknown</b> on line <b>0</b><br />

Eu acho isso estranho, já que este é um log do sistema e php (via apache) está tentando escrever código html nele. Isto parece acontecer em cada pageload no servidor (incluindo qualquer virtualhost).

Definir esses valores como off não é uma opção no momento (estou executando uma base de código não mantida). Meu php.ini contém, entre outras coisas:

error_reporting  = E_ALL & ~E_NOTICE & ~E_DEPRECATED
display_errors = On
register_globals = On
magic_quotes_gpc = On

Não tenho certeza se isso é um erro na configuração do php ou na configuração do apache. Alguém sabe como eu poderia evitar que essas mensagens sejam gravadas em errors.log em cada pageload?

  • PHP: Versão 5.3.2-2 Apache:
  • Apache / 2.2.16 (Debian)

Obrigado Gardar

    
por gardarh 31.10.2010 / 22:23

3 respostas

9

Enquanto as outras respostas aqui irão impedir que os erros sejam gravados no seu log de erros, eles estão simplesmente ignorando a mensagem de erro e não corrigindo o erro .

O erro neste caso é que o seu arquivo php.ini ainda possui magic_quotes_gpc on ou magic_quotes_gpc off em algum lugar. O mesmo é verdadeiro para register_globals on ou register_globals off .

O erro não é que a diretiva esteja ativada ou desativada. O erro é que a diretiva não deveria existir. Comente essas linhas do seu php.ini ou remova-as completamente e o PHP irá parar de escrever erros sobre diretivas obsoletas.

É claro que isso pode causar problemas em seu aplicativo se ele exigir que eles estejam ativados.

A razão pela qual isso é um erro no PHP 5.3 é que no PHP 6, estas diretivas não existirão e o PHP 6 irá se comportar como se elas estivessem desativadas. Se você planeja atualizar para o PHP 6, agora é um bom momento para começar a atualizar ou substituir seu aplicativo.

Outra solução que você pode tentar é fazer o downgrade do PHP de volta para o ramo 5.2 ou 5.1.

Quanto ao PHP escrever erros no log do Apache, isso é natural porque o PHP está rodando como um módulo do Apache. Você pode colocar algo como error_log = /var/log/php_errors.log no seu php.ini e reiniciar o Apache para ter os erros do PHP separados dos seus erros do Apache. Enquanto você estiver lá, recomendo alterar display_errors para off . As mensagens de erro geralmente contêm informações confidenciais que você não deseja que um invasor veja. Você provavelmente verá isso escrito em seu php.ini:

; - display_errors = Off           [Security]
;     With this directive set to off, errors that occur during the execution of
;     scripts will no longer be displayed as a part of the script output, and thus,
;     will no longer be exposed to remote users.  With some errors, the error message
;     content may expose information about your script, web server, or database
;     server that may be exploitable for hacking.  Production sites should have this
;     directive set to off.

Não há um motivo sensato para que as mensagens de erro contenham HTML.

Para responder a outra pergunta que você não fez, o motivo pelo qual o PHP relata isso como sendo in <b>Unknown</b> on line <b>0</b> é que a mensagem de erro foi projetada para linhas de código PHP que você escreveu, mas o erro encontrado foi analisar o php .ini antes mesmo de ler uma única linha de código ou até mesmo abrir um arquivo .php. Como não abriu um arquivo e não possui um número de linha, ele os relata como "Desconhecido" e "0".

    
por 01.11.2010 / 13:57
0

remova ~ E_DEPRECATED

tadam:)

    
por 31.10.2010 / 22:37
0

Esse comportamento pode ser evitado configurando display_errors = Off. Eu não estou perfeitamente feliz com esta solução, escrevendo erro de formato html para arquivos de log parece estranho para mim. Se alguém entender esse comportamento, por favor diga:)

    
por 31.10.2010 / 23:59