Désactiver l'Affichage des Erreurs PHP.ini
Je suis en train d'essayer d'éteindre toutes les erreurs sur mon site. J'ai suivi plusieurs tutoriels sur comment faire cela, mais je reçois lire et ouvrir des messages d'erreur. Est-il quelque chose que je suis absent? J'ai essayé ce qui suit dans mon php.fichier ini:
;Error display
display_startup_errors = Off
display_errors = Off
html_errors = Off
docref_root = 0
docref_ext = 0
Pour quelque raison que quand je fais un fileopen() appel à un fichier qui n'existe pas, j'ai toujours l'erreur affichée. Ce n'est pas sans danger pour un site web, pour des raisons évidentes.
Grâce
- Essayez de définir explicitement via la fonction ini_set() dans votre script. Cependant, c'est une mauvaise pratique et vous devez rattraper les erreurs et de faire quelque chose avec eux au lieu de se cacher via display_Errors
- Je vous conseille d'exécuter
grep display_errors /path/to/php.ini
pour voir si votre ligne est d'obtenir surdéfini quelque part en bas du fichier. C'est ce qui m'arrivait.
Vous devez vous connecter pour publier un commentaire.
J'ai toujours utiliser quelque chose comme cela dans un fichier de configuration:
Il permet de basculer entre les paramètres de débogage. Vous pouvez améliorer encore plus loin en vérifiant le serveur sur lequel le code est en cours d'exécution (dev, test, de l'acceptation, de la prod) et de modifier vos paramètres en conséquence.
Note qu'aucune erreur ne sera enregistrée si le niveau est réglé à 0, comme habilement fait remarquer par Korri.
display_errors
une sorte de fonction personnalisée? Je ne vois pas dans le manuel.Vous devriez envisager de pas l'affichage de vos messages d'erreur à la place!
Ensemble
ini_set('display_errors', 'Off');
dans votre code php (ou directement dans votre ini si possible), et de laisser la fonction error_reporting surE_ALL
ou quel que soit le type de messages que vous aimeriez trouver dans vos journaux.De cette façon, vous pouvez gérer les erreurs plus tard, alors que vos utilisateurs ne voient pas.
Exemple complet:
Ou tout simplement (même effet):
'1'
/'0'
, plutôt que de'On'
/'Off'
. Pour la simple raison que lorsque vous lisez la valeur de retour avecinit_get()
vous obtenez la chaîne littérale, qui a été défini.'Off'
est une chaîne non vide qui donne True.if(ini_get('display_errors'))
(qui en ce moment serait vrai de toute façon). Mais je pense réellement que la case ne doit jamais être fait comme ça de toute façon! Quelqu'un maintien du code pourrait toujours àOff
ouNo
(ou mêmeFoobar
(quoi que ce soit mais1
,Yes
etOn
fonctionne comme valeur négative)). Un coffre-fort contrôle pourrait être par exemple:$val = strtolower(ini_get('display_errors')); if ($val == '1' || $val == 'on' || $val == 'yes') ...
vous avez Toujours un point très valable, à mon humble avis!Dans
php.ini
Commentaire,En plaçant un
;
au-devant de lui ( c'est à dire comme;error_reporting = E_ALL & ~E_NOTICE
)Pour la désactivation dans un seul fichier, place
error_reporting(0);
après l'ouverture d'unphp
tag.en php.ini vous devriez essayer ce pour toutes les erreurs
php -ini | less
et trouver le chemin pour php.ini, ou de créer un file.php et mis à l'intérieur de<?php phpinfo(); ?>
Permettez-moi de résumer rapidement cette référence:
error_reporting()
s'adapte le réglage par défaut du gestionnaire d'erreurs.Édition de la les rapports d'erreurs options ini modifie également les paramètres par défaut.
Ici, il est impératif de modifier le corriger
php.ini
version - c'est généralement/etc/php5/fpm/php.ini
sur les serveurs modernes,/etc/php5/mod_php/php.ini
alternativement, tandis que la version CLI a une distincte.Alternativement, vous pouvez utiliser en fonction de SAPI:
.htaccess
avecphp_flag
optionsphp.ini
.user.ini
De redémarrer le serveur web, comme d'habitude.
Si votre code est difficile à manier et d'une certaine manière réinitialise ces options ailleurs au moment de l'exécution, l'alternative et de la méthode rapide est de définir un gestionnaire d'erreur personnalisé qui vient de slurps tous les avis/avertissements/erreurs:
Encore une fois, ce n'est pas conseillé, juste une alternative.
set_error_handler
hack ^^en php.ini vous devriez essayer ce pour toutes les erreurs
Vous pouvez également utiliser PHP
error_reporting();
Si vous voulez ignorer les erreurs d'une fonction seulement, vous pouvez ajouter un
@
symbole.Pourquoi désactiver?
Vous pouvez utiliser
error_reporting();
- http://php.net/manual/en/function.error-reporting.php ou de mettre un @ - http://www.php.net/manual/en/language.operators.errorcontrol.php en face de votre fileopen().J'ai l'habitude de l'utilisation de php dans les gestionnaires d'erreur qui peut gérer toutes les erreurs possibles en dehors de la syntaxe et encore rendu une belle "en Bas pour la maintenance" à la page sinon:
Format d'erreur PHP sur le serveur de production
Ouvrir votre php.fichier ini (Si vous utilisez Linux sudo vim /etc/php5/apache2/php.ini)
Ajouter ces lignes dans ce fichier
(Si vous avez besoin d'désactivé toutes les autres erreurs -> error_reporting = E_ALL & ~de niveau e_deprecated à partir & ~E_STRICT & ~E_NOTICE & ~E_WARNING)
Et enfin, vous devez redémarrer votre serveur APACHE.
il n'est pas suffisant dans le cas de php fpm. Il a été l'un plus fichier de configuration, ce qui peut permettre display_error. Vous devriez trouver http://www.conf, dans mon cas, c'est dans le répertoire /etc/php/7.1/fpm/pool.d/
vous devriez trouver
php_flag[display_errors] = on
et désactiverphp_flag[display_errors] = off
cela devrait résoudre le problème