web-dev-qa-db-fra.com

Comment puis-je faire taire les erreurs PHP?

Existe-t-il un moyen de faire taire toutes les erreurs, avertissements et notifications PHP dans Drupal?.

Je sais que sur Drupal 6 la page dans admin/settings/error-reporting peut empêcher Drupal d'écrire des erreurs sur l'écran, mais où puis-je trouver cela dans Drupal 7? Il semble qu'il manque.

32
drupal_stuff_alter

Le chemin change, comme dans Drupal 7 la même page que vous verriez auparavant dans admin/settings/error-reporting est maintenant dans admin/config/development/logging.

screenshot

29
kiamlaluno

Comme suggéré, dans Administration » Configuration » Development/admin/config/development/logging), Vous pouvez trouver le paramètre pour désactiver l'affichage des messages d'erreur, mais cela ne désactivera pas complètement les erreurs/notifications.

C'est parce que Drupal 7 applique E_ALL, ils sont donc toujours écrits dans syslog et vous pouvez les voir dans Journaux récents affectant les performances de votre site Web.

Pour désactiver complètement les notifications, vous devrez ajouter la ligne suivante dans votre fichier settings.php Ou php.ini:

ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);

Afficher toutes les erreurs, à l'exception des notifications et des avertissements relatifs aux normes de codage.

Pour faire taire toutes les erreurs PHP, ce qui n'est pas recommandé, vous pouvez essayer d'ajouter votre fichier de paramètres:

error_reporting(0); // Disable all errors.

Voir: error_reporting()


Responsable Drupal 7 code de base pour la journalisation E_ALL (Fichier: includes/bootstrap.inc):

// Enforce E_ALL, but allow users to set levels not part of E_ALL.
error_reporting(E_ALL | error_reporting());

Voir également:

18
kenorb

Une chose que personne n'a mentionnée qui peut être utile pour les gens est que Drupal 7 ignore tous les niveaux de rapport d'erreurs du système local. Vous ne pouvez donc pas utiliser .htaccess ou même php.ini pour définir niveaux de rapport d'erreurs php dans Drupal.

Il y a un correctif proposé pour cela dans D8, mais actuellement dans D7 vous êtes limité aux 3 masques d'erreur - tous, aucun, ou erreurs et avertissements - qui sont définis sur la page d'administration indiquée par kiamlaluno.

4
forest

Les paramètres sont toujours dans admin/config/development/logging :)

3
Remon

Je ne sais pas pourquoi la méthode Drush est si non documentée, mais j'ai dans mon script de construction:

drush vset error_level 0

... qui enregistre les messages d'erreur dans le journal mais ne les affiche pas à l'écran.

2
Matt Fletcher

Vous devrez peut-être ajouter des devis à la solution kenorb publiée ci-dessus:

ini_set('error_reporting', 'E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR');
1
Greg Lund-Chaix

Il existe un module pour cela:

https://www.drupal.org/project/errorlevelpermission

Depuis la page du projet:

Afin que vous puissiez

  • avoir un rôle de constructeur de site (ou même un rôle de débogueur spécial) voir les erreurs et les avis
  • que les autres ne voient pas les erreurs et les avis.
0
geek-merlin