web-dev-qa-db-fra.com

Désactivation des normes strictes dans PHP 5.4

Je suis en train de faire tourner un site sur php 5.4, avant cela, je courais mon site sur 5.3.8. Malheureusement, php 5.4 combine E_ALL et E_STRICT, ce qui signifie que mon réglage précédent pour error_reporting ne fonctionne pas maintenant. Ma valeur précédente était E_ALL & ~E_NOTICE & ~E_STRICT Devrais-je uniquement activer les valeurs une par une?

J'ai trop d'erreurs et les fichiers contiennent trop de code pour que je puisse les réparer.

95
icomrade

Comme les commentateurs l'ont déclaré, l'option la meilleure consiste à corriger les erreurs, mais avec un temps ou des connaissances limités, cela n'est pas toujours possible. Dans votre changement php.ini

error_reporting = E_ALL

à

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT

Si vous n'avez pas accès au php.ini, vous pouvez potentiellement le mettre dans votre fichier .htaccess:

php_value error_reporting 30711

C'est la valeur E_ALL (32767) et la suppression des valeurs E_STRICT (2048) et E_NOTICE (8).

Si vous n'avez pas accès au fichier .htaccess ou s'il n'est pas activé, vous devrez probablement le placer en haut de la section PHP de tout script chargé depuis un appel du navigateur:

error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);

Un de ceux-ci devrait vous aider à utiliser le logiciel. Les avis et les règles strictes sont des indicateurs de problèmes réels ou potentiels et vous constaterez peut-être qu'une partie du code ne fonctionnera pas correctement dans PHP 5.4.

J'espère que cela t'aides.

138
David Stockton

.htaccess php_value ne fonctionne que si vous utilisez PHP API de serveur en tant que module du serveur Web Apache. Utilisez la syntaxe IfModule:

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
    php_value error_reporting 30711
</IfModule>

Si vous utilisez PHP utilisation de l'API serveur CGI/FastCGI

ini_set('error_reporting', 30711);

ou

error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);

dans votre code PHP ou PHP fichiers de configuration .user.ini | php.ini modification:

error_reporting = E_ALL & ~E_STRICT & ~E_NOTICE

sur votre hôte virtuel, niveau serveur.

2
Taras

Si vous devez également désactiver E_DEPRACATED, utilisez:

php_value error_reporting 22527

Dans mon cas, CMS Made Simple se plaignait "E_STRICT est activé dans le rapport sur les erreurs" ainsi que "E_DEPRECATED est activé". L'ajout de cette ligne à .htaccess a résolu les deux problèmes de configuration.

1
envision

Cela a fonctionné pour moi, quand j'ai mis error_reporting à deux endroits en même temps

quelque part dans PHP code

ini_set('error_reporting', 30711);


et dans le fichier .htaccess

php_value error_reporting 30711
1
Guzik

Attention, vous devrez peut-être redémarrer LAMP, Apache ou ce que vous utilisez pour que cela prenne effet. Nous avons eu la cervelle pendant un moment sur celui-ci, ne semblant avoir aucun effet jusqu'à ce que les services soient redémarrés, probablement parce que le site Web était en cache.

0
Moon