Desativar erros obsoletos no PHP 5.3

127

Meu servidor está executando o PHP 5.3 e minha instalação do WordPress está cuspindo esses erros em mim, causando a interrupção do meu session_start ().

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 647

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 662

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 669

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 676

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 712

Isso é chato, mas não quero desativar o relatório de erros na tela. Como desabilito esses avisos preteridos incômodos?

Estou executando o WordPress 2.9.2.

atwellpub
fonte
3.3.1 não é a versão atualizada do wordpress?
Shadur 12/03/12
ele parece gostar de um php idade com wordpress velho
Qchmqs

Respostas:

203

Você pode fazer isso no código chamando as seguintes funções.

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

ou

error_reporting(E_ALL ^ E_DEPRECATED);
Robus
fonte
Obrigado Robus, isso também matará algum relatório de erro de php?
Atwellpub
6
Não, o primeiro diz basicamente ao php para mostrar erros de erro / aviso / aviso / aviso, o segundo diz ao php para mostrar todos os erros, exceto DEPRECATED.
Robus
1
Usando o PHP 5.5.9 no Ubuntu "error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_STRICT" Não tem efeito .... mas, no meu exemplo, "@mysql_connect ();" faça o truque :-(
molokoloco 4/16
@molokoloco você fez errado duas vezes. Primeiro você não consertou nada. Você acabou de silenciá-lo. Segundo, você ainda está usando o mysqlque está obsoleto. Você deve pelo menos mudar paramysqli
Marcin Orlowski
Não funciona É substituído em algum lugar? Onde você coloca isso?
Alex
22

Eu precisava adaptar isso para

error_reporting = E_ALL & ~E_DEPRECATED
Simon H
fonte
21

Para obter apenas os erros que fazem com que o aplicativo pare de funcionar, use:

error_reporting(E_ALL ^ (E_NOTICE | E_WARNING | E_DEPRECATED));

Isso deixará de mostrar avisos, avisos e erros preteridos.

codefreak
fonte
13

Todas as respostas anteriores estão corretas. Como ninguém sugeriu como desativar todos os erros no PHP, eu gostaria de mencionar aqui:

error_reporting(0); // Turn off warning, deprecated,
                    // notice everything except error

Alguém pode achar útil ...

sudip
fonte
11

Acabei de enfrentar um problema semelhante em que um plugin de SEO emitiu um grande número de avisos, fazendo com que o uso do disco do meu blog excedesse o limite do plano.

Descobri que você deve incluir o comando error_reporting após o wp-settings.php exigir no arquivo wp-config.php:

   require_once( ABSPATH .'wp-settings.php' );
   error_reporting( E_ALL ^ ( E_NOTICE | E_WARNING | E_DEPRECATED ) );

ao fazer isso, nenhum aviso, aviso ou linhas obsoletas serão anexados ao seu arquivo de log de erros!

Testado no WordPress 3.8, mas acho que funciona para todas as instalações.

Camaleo
fonte
9

No arquivo wp-config.php, você pode encontrar WP_DEBUG constante. Verifique se está definido como falso.

define('WP_DEBUG', false);

Isso é para o WordPress 3.x.

Audrius
fonte
7

Você precisa editar o arquivo de configuração do PHP. Encontre a linha

error_reporting = E_ALL

e substitua-o por:

error_reporting = E_ALL ^ E_DEPRECATED

Se você não tem acesso ao arquivo de configuração, pode adicionar esta linha ao arquivo PHP do WordPress (talvez headers.php):

error_reporting(E_ALL ^ E_DEPRECATED);
Kreker
fonte
É muito melhor adicionar isso a wp-config.php. Ele deve ser editado com as configurações.
Nilpo 19/03/19
4

Eu costumo usar esse método

$errorlevel=error_reporting();
$errorlevel=error_reporting($errorlevel & ~E_DEPRECATED);

Dessa forma, não desligo acidentalmente algo que preciso

realtebo
fonte
1
Isso lhe dá menos controle. Você está assumindo que tudo o que está configurado no momento está correto. Melhor configurá-lo diretamente, conforme necessário, para que você não obtenha configurações sobrepostas.
Nilpo 19/03/19
Compreendo. Cada caso é diferente.
Realtebo 19/03
1
Esta é, no entanto, a melhor resposta. É o único que responde diretamente à pergunta: desative apenas E_DEPRECATED, sem efeitos colaterais.
Sygmoral 12/01
-2

este erro ocorre quando você altera sua versão php: é muito simples suprimir essa mensagem de erro

Para suprimir a mensagem de erro DEPRECATED, basta adicionar o código abaixo ao seu arquivo index.php:

init_set ('display_errors', False);

dheerendra
fonte
não faça isso, isso oculta todas as mensagens de erro, não apenas para depreciações.
tanaydin