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.
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.
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.
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
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
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 .
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
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.
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.
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.
assurez-vous que le php.ini que vous modifiez est sur le /etc/php5/apache2 dossier, sinon ça n'aura aucun effet...
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.
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)
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.
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.
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
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