J'ai vérifié mon fichier ini PHP ( php.ini
) et display_errors
est défini, ainsi que le rapport d'erreurs E_ALL
. J'ai redémarré mon serveur Web Apache.
J'ai même mis ces lignes en haut de mon script, et il ne détecte même pas de simples erreurs d'analyse. Par exemple, je déclare des variables avec un "$"
et je ne ferme pas les instructions ";"
. Mais tous mes scripts affichent une page vierge sur ces erreurs, mais je veux réellement voir les erreurs dans la sortie de mon navigateur.
error_reporting(E_ALL);
ini_set('display_errors', 1);
Que reste-t-il à faire?
$_REQUEST
paramètre), ces deux lignes fonctionneront la plupart du temps.Réponses:
Ça fonctionne toujours pour moi:
Cependant, cela ne fait pas que PHP affiche les erreurs d'analyse - la seule façon de montrer ces erreurs est de modifier votre php.ini avec cette ligne:
(si vous n'y avez pas accès
php.ini
, mettre cette ligne.htaccess
peut également fonctionner):la source
php_flag display_errors 1
pour .htaccessE_ALL
n'est pas suffisant pour afficher toutes les erreurs en PHP 5.3. "E_STRICT
fait partie de la versionE_ALL
5.4.0" - PHP Manual Vous avez besoin deE_ALL | E_STRICT
ou-1
dans cette version.Vous ne pouvez pas détecter les erreurs d'analyse lors de l'activation de la sortie d'erreur lors de l'exécution, car il analyse le fichier avant d'exécuter quoi que ce soit (et puisqu'il rencontre une erreur pendant cela, il n'exécutera rien). Vous devrez modifier la configuration réelle du serveur afin que display_errors soit activé et que le niveau approprié error_reporting soit utilisé. Si vous n'avez pas accès à php.ini, vous pourrez peut-être utiliser .htaccess ou similaire, selon le serveur.
Cette question peut fournir des informations supplémentaires.
la source
Dans votre php.ini :
Redémarrez ensuite votre serveur Web.
la source
sudo service apache2 restart
sudo apachectl -k restart
.Loaded Configuration File
Pour afficher toutes les erreurs, vous devez:
1. Ayez ces lignes dans le script PHP que vous appelez à partir du navigateur (généralement
index.php
):2. (a) Assurez-vous que ce script ne contient aucune erreur de syntaxe
-ou-
2. (b) Insérez
display_errors = On
votrephp.ini
Sinon, il ne peut même pas exécuter ces 2 lignes!
Vous pouvez vérifier les erreurs de syntaxe dans votre script en exécutant (sur la ligne de commande):
Si vous incluez le script d'un autre script PHP alors il va afficher des erreurs de syntaxe dans le inclus script. Par exemple:
index.php
my_script.php
la source
Certains hébergeurs Web vous permettent de modifier les paramètres PHP dans le
.htaccess
fichier.Vous pouvez ajouter la ligne suivante:
J'ai eu le même problème que le vôtre et cette solution l'a corrigé.
la source
Vous trouverez peut-être que tous les paramètres de "rapport d'erreurs" ou "d'erreurs d'affichage" ne semblent pas fonctionner dans PHP 7. En effet, la gestion des erreurs a changé. Essayez plutôt ceci:
Ou, pour détecter les exceptions et les erreurs en une seule fois (ce n'est pas rétrocompatible avec PHP 5):
la source
try{} catch() {}
code partout dans votre code php déjà défini, je ne veux même pas penser au gâchis qui va être ..$bt = debug_backtrace(); print_r($bt);
.Error
. Si vous réécrivez toutes les demandes (sauf peut-être JavaScript, CSS, Images, etc.) dans le fichier index.php, puis y avez le bloc try catch, cela facilite la tâche. Oui, tout système qui n'a pas de point d'entrée unique serait un casse-tête majeur à mettre à jour.Cela fonctionnera:
la source
Utilisation:
C'est la meilleure façon de l'écrire, mais une erreur de syntaxe donne une sortie vide, utilisez donc la console pour vérifier les erreurs de syntaxe. La meilleure façon de déboguer du code PHP est d'utiliser la console; exécutez ce qui suit:
la source
Réglez ceci dans votre fichier index.php :
la source
Créez un fichier appelé php.ini dans le dossier où réside votre fichier PHP.
Dans php.ini, ajoutez le code suivant (je donne une simple erreur en affichant le code):
la source
Voici un script PHP:
Pour une explication plus détaillée des erreurs PHP, visitez PHP Error - error_reporting () .
la source
Si, malgré le respect de toutes les réponses ci-dessus (ou si vous ne pouvez pas modifier votre fichier php.ini), vous ne pouvez toujours pas obtenir de message d'erreur, essayez de créer un nouveau fichier PHP qui permet de signaler les erreurs, puis incluez le fichier de problème. par exemple:
Bien que tout soit correctement défini dans mon
php.ini
fichier, c'était la seule façon de détecter une erreur d'espace de noms. Mon scénario exact était:la source
J'allais généralement avec le code suivant dans mes projets PHP simples.
la source
Lorsque vous utilisez PHP comme module Apache, nous pouvons modifier les paramètres de configuration en utilisant les directives dans les fichiers de configuration Apache (par exemple httpd.conf) et les fichiers .htaccess. Pour ce faire, vous aurez besoin des privilèges «AllowOverride Options» ou «AllowOverride All».
Vérifiez ça
http://funbird.co.uk/blog/tech-articals/linux-tech-articals/enabling-error-display-php-via-htaccess
la source
Si vous vous trouvez dans une situation où vous ne pouvez pas modifier le paramètre via
php.ini
ou si.htaccess
vous n'avez pas de chance d'afficher des erreurs lorsque vos scripts PHP contiennent des erreurs d'analyse. Vous devriez alors vous résoudre à peloter les fichiers sur la ligne de commande comme ceci:Si votre hôte est tellement verrouillé qu'il ne permet pas de modifier la valeur via
php.ini
ou.htaccess
, il peut également interdire de modifier la valeur viaini_set
. Vous pouvez le vérifier avec le script PHP suivant:la source
find . -name '*.php' -type f -exec php -l {} \; | grep -v 'No syntax errors detected'
est plus simpleComme nous utilisons maintenant PHP 7, les réponses données ici ne sont plus correctes. Le seul qui soit encore correct est celui de Frank Forte , alors qu'il parle de PHP 7.
D'un autre côté, plutôt que d'essayer d'attraper des erreurs avec un try / catch, vous pouvez utiliser une astuce: utilisez include.
Voici trois morceaux de code:
Fichier: tst1.php
L'exécuter en PHP 7 ne montrera rien.
Maintenant, essayez ceci:
Fichier: tst2.php
Fichier: tst3.php
Exécutez maintenant tst2 qui définit le rapport d'erreur, puis incluez tst3. Tu verras:
la source
Vous pouvez faire quelque chose comme ci-dessous:
Définissez les paramètres ci-dessous dans votre fichier d'index principal:
Ensuite, en fonction de vos besoins, vous pouvez choisir celui que vous souhaitez afficher:
Pour toutes les erreurs, avertissements et notifications:
Pour toutes les erreurs:
Pour tous les avertissements:
Pour tous les avis:
Pour plus d'informations, cliquez ici .
la source
index.html
?Vous pouvez ajouter votre propre gestionnaire d'erreurs personnalisé, qui peut fournir des informations de débogage supplémentaires. En outre, vous pouvez le configurer pour vous envoyer les informations par e-mail.
la source
Ce code en haut devrait fonctionner:
Cependant, essayez de modifier le code sur le téléphone dans le fichier:
la source
La meilleure solution / facile / rapide que vous pouvez utiliser s'il s'agit d'un débogage rapide consiste à entourer votre code d'exceptions de capture. C'est ce que je fais quand je veux vérifier quelque chose de rapide en production.
la source
catch (Throwable $e)
c'est mieux ... Ou un autre bloc de capture en dessouscatch(Error $e)
Ecrivez:
la source
Voilà ce que j'ai appris. Dans le fichier PHP.INI,
la source
Pendant que votre site est en ligne,
php.ini
display_errors doit être désactivé pour des raisons de sécurité. Cependant, pour l'environnement de développement, les erreurs d'affichage peuvent être activées pour le dépannage.la source
Vous pouvez le faire en modifiant le fichier php.ini et en ajoutant ce qui suit
OU vous pouvez également utiliser le code suivant car cela fonctionne toujours pour moi
la source
Si vous avez installé Xdebug, vous pouvez remplacer chaque paramètre en définissant:
la source
Vous voudrez peut-être utiliser ce code:
la source
Signaler toutes les erreurs sauf E_NOTICE
Afficher toutes les erreurs PHP
Désactiver tous les rapports d'erreur
la source
Dans Unix CLI , il est très pratique de rediriger uniquement les erreurs vers un fichier :
Puis à partir d'un autre shell, pour les changements en direct:
ou simplement
la source
./script
est un script CLI php (hashbang#!/usr/bin/php
). Vous pouvez rediriger les erreurs php dans un fichier de cette façon. Il s'agit de la tuyauterie Unix. Ce n'est pas php comme CGI.S'il se trouve sur la ligne de commande, vous pouvez exécuter
php
avec-ddisplay_errors=1
pour remplacer le paramètre dansphp.ini
:la source
Outre les fonctions
php.ini
etini_set()
dans un script PHP, vous pouvez faire la même chose avec.htaccess
ethttpd.conf
directives indiquées ci-dessous.Certains hébergeurs permettent de définir les paramètres PHP via
.htaccess
ethttpd.conf
.Masquer les erreurs PHP
trouvé cette réponse en recherchant un peu sur Google
la source