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".