PHP n'affiche pas les erreurs même si display errors = On

j'ai un serveur Ubuntu qui exécute Apache2 avec PHP 5. Dans le php.j'ai mis error_reporting = E_ALL | E_STRICT et error_reporting = E_ALL | E_STRICT , mais PHP n'affiche toujours pas de messages d'erreur. J'utilise aussi des serveurs virtuels Apache.

aussi, ce qui est le rapport D'erreur le plus strict PHP5.3 has to offer? Je veux que mon code soit le plus à jour possible.

36
demandé sur wowpatrick 2011-06-26 00:46:13

15 réponses

vous devez également vous assurer que votre fichier php.ini inclut l'ensemble suivant ou les erreurs iront seulement au journal qui est défini par défaut ou spécifié dans la configuration de l'hôte virtuel.

display_errors = On

le fichier php.ini est l'endroit où les paramètres de base pour tout PHP sur votre serveur, cependant ceux-ci peuvent facilement être dépassés et modifiés n'importe où dans le code PHP et tout effet suivant ce changement. Une bonne vérification consiste à ajouter la directive display_errors votre dossier php.ini . Si vous ne voyez pas d'erreur, mais qu'une erreur est journalisée, insérez ceci en haut du fichier provoquant l'erreur:

ini_set('display_errors', 1);
error_reporting(E_ALL);

si cela fonctionne alors quelque chose plus tôt dans votre code est désactiver l'affichage d'erreur.

69
répondu Ray 2017-06-30 21:58:31

j'ai eu le même problème et enfin résolu. Mon erreur a été que j'ai essayé de changer /etc/php5/cli/php.ini , mais puis j'ai trouvé un autre php.ini ici: /etc/php5/apache2/php.ini , modifié display_errors = On, redémarré le serveur web et il a fonctionné!

peut-être serait-ce utile pour quelqu'un qui est distrait comme moi.

12
répondu vk23 2013-02-22 16:09:16

j'ai eu le même problème sur mon serveur virtuel avec le Panneau Parallels Plesk 10.4.4. La solution était (grâce à Zappa pour l'idée) de définir la valeur error_reporting à 32767 au lieu de E_ALL. Dans Parallels Plesk Panel: Accueil > Abonnements > (sélectionner le domaine) > personnaliser > paramètres PHP > error_reporting-entrer la valeur personnalisée-32767

7
répondu Bartek Kosa 2012-05-24 17:30:46

bien que ce soit un ancien post... j'ai eu la même situation qui m'a donné mal à la tête. Enfin, j'ai compris que j'incluais des sous-pages dans l'index.php avec " @include ..." "@"cache toutes les erreurs même si display_errors est sur

3
répondu Tomek 2014-05-04 07:07:13

lorsque vous mettez à jour la configuration dans le php.fichier ini, vous pourriez avoir à redémarrer apache. Essayez apachectl restart ou apache2ctl restart , ou quelque chose comme ça.

aussi, dans votre fichier ini, assurez-vous que vous avez display_errors = on , mais seulement dans un environnement de développement, jamais dans une machine de production.

en outre, le rapport d'erreur le plus strict est exactement ce que vous avez cité, E_ALL | E_STRICT . Vous pouvez trouver plus d'informations sur le taux d'erreur à le php docs .

2
répondu 2011-06-25 20:55:07

cochez le drapeau error_reporting , doit être E_ALL , mais dans une certaine libération de Plesk Il ya des citations ( "E_ALL" ) au lieu de ( E_ALL )

j'ai résolu ce problème suppression des guillemets ( " ) dans php.ini

de ceci:

error_reporting = "E_ALL"

à ceci:

error_reporting = E_ALL
1
répondu fremsoft 2015-07-04 18:18:20

j'ai eu le MÊME PROBLÈME MAIS j'ai utilisé ini_set('display_errors', '1'); dans le script défectueux lui-même donc il ne tire jamais sur des erreurs fatales / syntaxiques. Enfin je l'ai résolu en ajoutant ceci à mon .htaccess:

php_value auto_prepend_file /usr/www/{YOUR_PATH}/display_errors.php

display_errors.php:

<?php
ini_set('display_errors', 1);
error_reporting(-1);
?>

par ce que je n'ai pas été forcé de changer le php.ini , l'utiliser pour des sous-dossiers spécifiques et pourrait facilement le désactiver à nouveau.

1
répondu mgutt 2017-02-27 02:08:12

je sais que ce fil est ancien, mais je viens de résoudre un problème similaire avec mon serveur Ubuntu et j'ai pensé que je voudrais ajouter une note ici pour aider les autres car ce fil était première page dans Google pour le sujet de PHP ne pas afficher des erreurs.

j'ai essayé plusieurs paramètres de configuration pour la valeur error_reporting en php.ini. De E_ALL / E_STRICT à E_ALL & E_NOTICE et aucun n'a fonctionné. Je n'ai pas eu d'erreurs de syntaxe affichées dans le navigateur (ce qui est plutôt ennuyeux sur un serveur de développement). Après avoir changé le paramètre error_reporting en" E_ALL", tout a commencé à fonctionner. Je ne sais pas si C'est un problème spécifique à L'Ubuntu, mais après avoir redémarré, les erreurs Apache ont commencé à apparaître dans les pages HTML que le serveur servait. Il semble que les options supplémentaires embrouillent les choses et que toutes les erreurs cessent. HTH la somone d'autre.

0
répondu Zappa 2011-11-11 00:36:12

j'ai juste connu ce même problème et il s'est avéré que mon problème n'était pas dans le php.les fichiers ini, mais simplement que je démarrais le serveur apache en tant qu'Utilisateur régulier. Dès que j'ai fait un "sudo /etc/init.d / apache2 redémarrage", mes erreurs ont été affichées.

0
répondu PhlegmaticFraggle 2012-06-29 13:01:14

assurez-vous que le php.ini que vous modifiez est sur le /etc/php5/apache2 dossier, sinon ça n'aura aucun effet...

0
répondu Johnz 2013-04-28 20:30:59

je veux juste ajouter un autre piège ici au cas où quelqu'un trouve cette question avec un problème similaire au mien.

lorsque vous utilisez Chrome (ou Chromium) et PHP déclenche une erreur dans le code PHP qui est situé à l'intérieur d'un attribut HTML, puis Chrome supprime l'ensemble de L'élément HTML de sorte que vous ne pouvez pas voir l'erreur PHP dans votre navigateur.

voici un exemple:

<p>
  <a href="<?=missingFunc()?>">test</a>
</p>

en appelant ce code dans Chrome vous obtenez seulement un Document HTML avec la balise de départ <p> . Le reste est manquant. Aucun message d'erreur et aucun autre code HTML après ce <p> . C'est et non un problème PHP. Lorsque vous ouvrez cette page dans Firefox, vous pouvez voir le message d'erreur (lorsque vous visualisez le code HTML). Donc c'est un problème de Chrome.

Je ne sais pas s'il y a une solution quelque part. Lorsque cela vous arrive, vous devez tester la page dans Firefox ou vérifier le journal des erreurs Apache.

0
répondu kayahr 2013-05-14 14:28:58

j'ai eu le même problème avec Apache et PHP 5.5. Dans php.ini , j'ai eu les lignes suivantes:

error_reporting E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
display_errors Off

au lieu de:

error_reporting=E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
display_errors=Off

(le signe = manquait)

0
répondu hiszpan 2015-02-02 16:51:14

bien que ce fil soit vieux mais encore, je pense que je devrais poster une bonne réponse de cette réponse de débordement de Stack .

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

ça m'a sauvé après des heures à essayer de faire marcher les choses. J'espère que cela aide quelqu'un.

0
répondu mikaelovi 2017-11-09 10:54:48

lorsque vous exécutez PHP sous windows avec ISS, il y a des paramètres de configuration dans ISS qui doivent être définis pour empêcher les pages génériques par défaut d'être affichées.

1) double-cliquez sur FastCGISettings, cliquez sur PHP puis éditez. Réglez StandardErrorMode pour ReturnStdErrLn500.

StandardErrorMode

2) Allez sur le site, Double-cliquez sur les Pages D'erreur, cliquez sur le statut 500, cliquez sur Modifier la fonctionnalité Paramètres, Changer les réponses D'erreur aux erreurs détaillées, cliquez sur ok

Modifier les Réponses d'Erreur Détaillé des Erreurs

0
répondu naw103 2018-02-07 02:29:45

j'ai rencontré le problème. J'ai enfin trouvé la solution. J'utilise UBUNTU 16.04 LTS.

1) Ouvrir le fichier /ect/php/7.0/apache2/php.ini (sous le /etc/php on peut avoir une version différente de PHP mais apache2/php.ini sera sous le fichier de version), trouver ERROR HANDLING AND LOGGING section et définir la valeur suivante {display_error = On, error_reporting = E_ALL} .

NOTE - sous la section QUICK REFERENCE on peut également trouver ces directives de valeurs mais ne pas changer il suffit de changer dans l'Article je l'ai dit.

2) redémarrer le serveur Apache sudo systemctl restart apache2

0
répondu kn_snipper 2018-04-10 10:17:24