Désactiver les erreurs obsolètes dans PHP 5.3

127

Mon serveur exécute PHP 5.3 et mon installation WordPress crache ces erreurs sur moi, provoquant la rupture de 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

C'est ennuyeux, mais je ne veux pas désactiver le rapport d'erreur d'écran. Comment désactiver ces avertissements désapprouvés gênants?

J'utilise WordPress 2.9.2.

atwellpub
la source
La 3.3.1 n'est-elle pas la version actuelle à jour de wordpress?
Shadur
il semble aimer un vieux php avec du vieux wordpress
Qchmqs

Réponses:

203

Vous pouvez le faire dans le code en appelant les fonctions suivantes.

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

ou

error_reporting(E_ALL ^ E_DEPRECATED);
Robus
la source
Merci Robus, est-ce que cela éliminera également les rapports d'erreur php?
atwellpub
6
Non, le premier dit essentiellement à php d'afficher les erreurs ERROR / WARNING / PARSE / NOTICE, le second dit à php d'afficher toutes les erreurs sauf les erreurs DEPRECATED.
Robus
1
Utilisation de PHP 5.5.9 sur Ubuntu "error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_STRICT" N'a aucun effet .... mais, dans mon exemple, "@mysql_connect ();" faire l'affaire :-(
molokoloco
@molokoloco vous l'avez mal fait deux fois. D'abord, vous n'avez rien arrangé. Vous venez de le faire taire. Deuxièmement, vous utilisez toujours mysqlce qui est obsolète. Vous devriez au moins passer àmysqli
Marcin Orlowski
Ça ne marche pas. Est-il écrasé quelque part? Où mettez-vous cela?
Alex
22

J'avais besoin d'adapter ça à

error_reporting = E_ALL & ~E_DEPRECATED
Simon H
la source
21

Pour obtenir uniquement les erreurs qui empêchent l'application de fonctionner, utilisez:

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

Cela cessera d'afficher les avis, les avertissements et les erreurs obsolètes.

codefreak
la source
13

Toutes les réponses précédentes sont correctes. Comme personne n'a indiqué comment désactiver toutes les erreurs en PHP, je voudrais le mentionner ici:

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

Quelqu'un pourrait trouver cela utile ...

sudip
la source
11

Je viens de faire face à un problème similaire où un plugin SEO a émis un grand nombre d'avertissements rendant l'utilisation du disque de mon blog dépassant la limite du plan.

J'ai découvert que vous devez inclure la commande error_reporting après le wp-settings.php require dans le fichier wp-config.php:

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

en faisant cela, plus aucun avertissement, aucun avis ni aucune ligne obsolète ne sont ajoutés à votre fichier journal des erreurs!

Testé sur WordPress 3.8 mais je suppose que cela fonctionne pour chaque installation.

Camaleo
la source
9

Dans le fichier wp-config.php, vous pouvez trouver la constante WP_DEBUG. Assurez-vous qu'il est défini sur false.

define('WP_DEBUG', false);

Ceci est pour WordPress 3.x.

Audrius
la source
7

Vous devez éditer le fichier de configuration PHP. Trouvez la ligne

error_reporting = E_ALL

et remplacez-le par:

error_reporting = E_ALL ^ E_DEPRECATED

Si vous n'avez pas accès au fichier de configuration, vous pouvez ajouter cette ligne au fichier PHP WordPress (peut-être headers.php):

error_reporting(E_ALL ^ E_DEPRECATED);
Kreker
la source
Il vaut mieux ajouter ceci wp-config.php. Il est destiné à être modifié avec les paramètres de configuration.
Nilpo
4

J'ai tendance à utiliser cette méthode

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

De cette façon, je ne coupe pas accidentellement quelque chose dont j'ai besoin

realtebo
la source
1
Cela vous donne moins de contrôle. Vous supposez que tout ce qui est actuellement configuré est correct. Mieux vaut le définir directement au besoin afin de ne pas avoir de configurations qui se chevauchent.
Nilpo
Comprendre. Chaque cas est différent.
realtebo
1
C'est néanmoins la meilleure réponse. C'est le seul qui répond directement à la question: ne désactivez que E_DEPRECATED, sans aucun effet secondaire.
Sygmoral le
-2

cette erreur se produit lorsque vous modifiez votre version de php: il est très simple de supprimer ce message d'erreur

Pour supprimer le message d'erreur DEPRECATED, ajoutez simplement le code ci-dessous dans votre fichier index.php:

init_set ('afficher_erreurs', False);

Dheerendra
la source
ne faites pas cela, cela masque tous les messages d'erreur, pas seulement pour les amortissements.
tanaydin le