captain_torche Posté 6 Octobre 2011 Posté 6 Octobre 2011 Je suis en train de débugger un vieux site, qui génère pas mal d'erreurs de type E_DEPRECATED sur mon installation locale (J'utilise Wampserver). Je voudrais désactiver ces erreurs mais laisser les autres affichées, mais mes tentatives n'ont pour l'instant pas abouti. J'ai dans mon fichier index.php, cette ligne : error_reporting (E_ALL & ~E_DEPRECATED); Qui est censée, si je ne m'abuse, m'afficher toutes les erreurs SAUF les erreurs de type E_DEPRECATED, mais ça ne semble pas fonctionner. Y-a-t'il quelque chose que j'aurais loupé ? Pour info, Mon installation de Wampserver est comme suit : - Apache 2.0.63 - PHP 5.3.5
SStephane Posté 6 Octobre 2011 Posté 6 Octobre 2011 error_reporting(E_ALL ^ E_DEPRECATED); error_reporting(E_ALL & ~E_NOTICE) Envoi toutes les erreurs sauf sauf celles de type E_DEPRECATED(la seconde exclue E_USER_DEPRECATED)
captain_torche Posté 6 Octobre 2011 Auteur Posté 6 Octobre 2011 Non, malheureusement les deux syntaxes me font quand même ressortir les erreurs suivantes, par WampServer : ( ! ) Deprecated: Function eregi_replace() is deprecated in C:\***\t3lib\class.t3lib_div.php on line 1800
SStephane Posté 6 Octobre 2011 Posté 6 Octobre 2011 Etrange, es-tu certain que la fonction error_reporting est appelée ? le mieux, modifie directement ça dans php.ini Si tu as défini un gestionnaire d'erreur avec set_error_handler(), cette fonction est sans effet, cela peut être le cas si tu utilises un framework qui ont en général leur propre gestionnaire d'erreur (je dis ça de mémoire pour le truc du sans effet). au pire, quel est le résultat de ça ? $old = error_reporting(E_ALL & ~E_NOTICE)var_dump($old);var_dump(E_ALL & ~E_NOTICE);var_dump($old==(E_ALL & ~E_NOTICE)); Sinon, si il n'y en a pas trop, change les eregi_replace dépréciés par des preg_replace
captain_torche Posté 6 Octobre 2011 Auteur Posté 6 Octobre 2011 Désactiver le error_reporting dans le PHP pour le mettre dans le php.ini ne change rien. Ton code me donne ceci : int 30711int 30711 boolean true Et sinon, il semble qu'il y ait BEAUCOUP TROP d'eregi pour que je les remplace (Une très vieille install de Typo3 ...)
SStephane Posté 6 Octobre 2011 Posté 6 Octobre 2011 Euh, t'as un truc bizarre là, E_ALL & ~E_NOTICE, ca devrait être 6135, pas 30711 Essaie error_reporting(6135); (c'est déconseillé en prod de pas utiliser les constantes) Si ça marche pas : php_value error_reporting 6135 dans ton htaccess, afin de ne pas y passer trop de temps Si ca marche toujours pas, typo3 a surement un gestionnaire d'erreurs (si ce que je pense est vrai), alors display_errors = off (comme en prod )
captain_torche Posté 6 Octobre 2011 Auteur Posté 6 Octobre 2011 Non, rien de tout ça ne marche La désactivation des erreurs, c'est ce que je fais déjà faute de mieux, mais ça me complique grandement le debug
SStephane Posté 6 Octobre 2011 Posté 6 Octobre 2011 Je t'ai dit une connerie, 30711 c'est la nouvelle valeur de E_ALL pour php5.3, mea culpa, attends une sec, j'ai pas 5.3 là
SStephane Posté 6 Octobre 2011 Posté 6 Octobre 2011 En fait E_ALL ^ E_DEPRECATED devrait fonctionner. <?php$old = error_reporting( E_ALL ^ E_DEPRECATED);var_dump($old);var_dump( E_ALL ^ E_DEPRECATED);print eregi_replace('a', 'b', 'azertazareztaez');?> Devrait de renvoyer int(30719) int(22527) bzertbzbreztbez (la première valeur dépend de ton php.ini) Essaie donc error_reporting( E_ALL ^ 8192 ); si ça ne fonctionne pas (vois la valeur de old) En fait, il doit y avoir un autre appel à error_reporting qq part dans typo3 qui surcharge le tiens (si tu n'as pas désactivé la fonction dans php.ini).
captain_torche Posté 6 Octobre 2011 Auteur Posté 6 Octobre 2011 j'ai constamment int 30711int 22527 bzertbzbreztbez Quoi que je change dans le php.ini. Je vais essayer de regarder s'il n'y a pas un autre endroit dans Typo où ça soit renseigné, effectivement.
SStephane Posté 6 Octobre 2011 Posté 6 Octobre 2011 j'ai constamment int 30711 int 22527 bzertbzbreztbez Quoi que je change dans le php.ini. C'est très bien si tu as ça, t'as certainement E_ALL & ~E_NOTICE dans php.ini, par contre si tu le change dans le ini et que ça bouge pas à l'affichage, soit tu ne charges pas le bon php.ini, soit tu ne relance pas apache Et oui, je crois qu'il y a un autre error_reporting exécuté ultérieurement dans ton appli. (fait un print error_reporting(); en bas de ta page pour t'en convaincre, t'auras certainement pas 22527 qui n'afficherait pas les E_DEPRECATED).
captain_torche Posté 6 Octobre 2011 Auteur Posté 6 Octobre 2011 Ok, je crois que j'ai trouvé le fichier qui interférait Je dois faire encore quelques réglages (notamment supprimer les alertes sur les undefined index, mais c'est un grand pas en avant ... merci !)
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant