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.


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);

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

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.


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


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.


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.


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);

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


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);


ne faites pas cela, cela masque tous les messages d'erreur, pas seulement pour les amortissements.
tanaydin le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.