web-dev-qa-db-fra.com

PHP 5 désactiver l'erreur de normes strictes

Je dois installer mon script PHP en haut pour désactiver le rapport d'erreurs pour les normes strictes.

Quelqu'un peut aider?

173
Manny Calavera

Voulez-vous désactiver le rapport d'erreur ou empêcher simplement l'utilisateur de le voir? Il est généralement conseillé de consigner les erreurs, même sur un site de production.

# in your PHP code:
ini_set('display_errors', '0');     # don't show any errors...
error_reporting(E_ALL | E_STRICT);  # ...but do log them

Ils seront consignés dans votre journal système standard ou utilisez la directive error_log pour spécifier exactement où vous voulez que les erreurs aillent.

183
Nate

Pour aucune erreur.

error_reporting(0);

ou pour juste pas strict

error_reporting(E_ALL ^ E_STRICT);

et si vous souhaitez à nouveau afficher toutes les erreurs, utilisez

error_reporting(-1);

90
Tyler Carter

Toutes les solutions ci-dessus sont correctes. Mais, lorsque nous parlons d'une application normale PHP, ils doivent être inclus dans chaque page, ce qui est nécessaire. Un moyen de résoudre ce problème consiste à utiliser .htaccess dans le dossier racine. Juste pour cacher les erreurs. [Mettez l'une des lignes suivantes dans le fichier]

php_flag display_errors off

Ou

php_value display_errors 0

Ensuite, pour définir le rapport d'erreur

php_value error_reporting 30719

Si vous vous demandez comment est venue la valeur 30719, E_ALL (32767), E_STRICT (2048) sont en fait des valeurs constantes contenant une valeur numérique et (32767 - 2048 = 30719)

30
Starx

La valeur par défaut de error_reporting flag est E_ALL & ~ E_NOTICE si elle n'est pas définie dans le fichier php.ini. Mais dans certaines installations (notamment celles qui ciblent des environnements de développement), E_ALL | E_STRICT a la valeur cet indicateur (il s’agit du valeur recommandée pendant le développement ). Dans certains cas, spécialement lorsque vous souhaiterez exécuter des projets open source, ceux-ci avaient été développés avant PHP 5.3 et n'étaient pas encore mis à jour avec les meilleures pratiques définies par PHP 5.3, dans Dans votre environnement de développement, vous rencontrerez probablement des messages similaires à ceux que vous recevez. Le meilleur moyen de faire face à cette situation est de définir uniquement E_ALL avec la valeur de l'indicateur error_reporting, soit dans php.ini ou dans code (probablement dans un contrôleur frontal comme index.php dans la racine Web, comme suit:

if(defined('E_STRICT')){
    error_reporting(E_ALL);
}
9
M N Islam Shihan

Dans le jeu php.ini:

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
8
MSS

WordPress

Si vous travaillez dans l'environnement wordpress, Wordpress définit le niveau d'erreur dans le fichier wp-includes/load.php dans la fonction wp_debug_mode(). Il faut donc changer le niveau APRES que cette fonction ait été appelée (dans un fichier non archivé dans git, c'est uniquement du développement), ou modifier directement l'appel error_reporting()

4
Nicola Peluchetti

Je n'ai pas vu de réponse propre et adaptée aux logiciels prêts à la production, alors voilà:

/*
 * Get current error_reporting value,
 * so that we don't lose preferences set in php.ini and .htaccess
 * and accidently reenable message types disabled in those.
 *
 * If you want to disable e.g. E_STRICT on a global level,
 * use php.ini (or .htaccess for folder-level)
 */
$old_error_reporting = error_reporting();

/*
 * Disable E_STRICT on top of current error_reporting.
 *
 * Note: do NOT use ^ for disabling error message types,
 * as ^ will re-ENABLE the message type if it happens to be disabled already!
 */
error_reporting($old_error_reporting & ~E_STRICT);


// code that should not emit E_STRICT messages goes here


/*
 * Optional, depending on if/what code comes after.
 * Restore old settings.
 */
error_reporting($old_error_reporting);
2
Jay