119 votes

Activer l'affichage des erreurs en PHP via htaccess uniquement

Je suis en train de tester un site web en ligne.

Actuellement, les erreurs ne sont pas affichées (mais je sais qu'elles existent).

Je n'ai accès qu'au fichier .htaccess.

Comment puis-je faire en sorte que toutes les erreurs s'affichent en utilisant mon fichier .htaccess ?


J'ai ajouté ces lignes à mon fichier .htaccess :

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

Et les pages affichent maintenant :

Erreur interne du serveur

0 votes

J'ai fait quelques recherches sur Google, ajouté quelques drapeaux à mon fichier htaccess ; et mes pages ne peuvent plus s'afficher

3 votes

Il semble que vous n'ayez pas les droits pour remplacer ces paramètres depuis le fichier htaccess. Vous devrez peut-être définir AllowOverride All dans la configuration Apache, si vous y avez accès.

0 votes

Vérifiez votre journal d'erreurs Apache. Il contiendra la raison exacte pour laquelle vous obtenez l'erreur interne 500. Ce que vous voyez dans le navigateur est inutile à des fins de diagnostic.

200voto

silex Points 2137

.htaccess:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_value error_log /home/path/public_html/domain/PHP_errors.log

19 votes

J'ai ajouté ces lignes à mon fichier htaccess : php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on et les pages affichent une erreur serveur interne

4 votes

Lorsque vous utilisez PHP en tant que module Apache, vous pouvez également modifier les paramètres de configuration en utilisant des directives dans les fichiers de configuration Apache (par exemple, httpd.conf) et les fichiers .htaccess. Vous aurez besoin des privilèges "AllowOverride Options" ou "AllowOverride All" pour le faire. php.net/manual/en/configuration.changes.php

0 votes

Créez le fichier PHP_errors.log et mettez-le en 777 sinon vous ne verrez probablement pas le fichier créé par apache et rempli... Au moins j'ai dû le créer.

43voto

UFTimmy Points 331
php_flag display_errors on

Pour activer l'affichage réel des erreurs.

Pour définir les types d'erreurs que vous affichez, vous devrez utiliser :

php_value error_reporting 

Combiné avec les valeurs entières de cette page : http://php.net/manual/en/errorfunc.constants.php

Remarque : si vous utilisez -1 pour votre entier, cela affichera toutes les erreurs et sera prêt pour l'avenir lorsqu'ils ajouteront de nouveaux types d'erreurs.

0 votes

J'utilise ce site Web pour calculer la valeur entière plus facilement : maximivanov.github.io/php-error-reporting-calculator

21voto

Ashish Points 539

Je pense ajouter plus de détails à la réponse existante:

# Gestion des erreurs PHP pour les serveurs de développement
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /chemin/complet/vers/fichier/php_errors.log
php_value error_reporting -1
php_value log_errors_max_len 0

Donnez une permission 777 ou 755 au fichier journal, puis ajoutez le code

     Order allow,deny
     Deny from all
     Satisfy All

à la fin de .htaccess. Cela protégera votre fichier journal.

Ces options sont adaptées à un serveur de développement. Pour un serveur de production, vous ne devriez pas afficher d'erreurs à l'utilisateur final. Alors changez les drapeaux d'affichage en off.

Pour plus d'informations, suivez ce lien : Gestion avancée des erreurs PHP via htaccess

5voto

Zeke Points 153

Si vous voulez voir uniquement les erreurs d'exécution fatales :

php_value display_errors on
php_value error_reporting 4

2voto

Darkcoder Points 186

Cela fonctionne pour moi (référence):

# Gestion des erreurs PHP pour les serveurs de production
# Désactiver l'affichage des erreurs de démarrage
php_flag display_startup_errors off

# Désactiver l'affichage de toutes les autres erreurs
php_flag display_errors off

# Désactiver le balisage HTML des erreurs
php_flag html_errors off

# Activer l'enregistrement des erreurs
php_flag log_errors on

# Désactiver l'ignorance des erreurs répétées
php_flag ignore_repeated_errors off

# Désactiver l'ignorance des erreurs de source unique
php_flag ignore_repeated_source off

# Activer l'enregistrement des fuites de mémoire PHP
php_flag report_memleaks on

# Préserver la dernière erreur via php_errormsg
php_flag track_errors on

# Désactiver la mise en forme des liens de référence d'erreur
php_value docref_root 0

# Désactiver la mise en forme des liens de référence d'erreur
php_value docref_ext 0

# Spécifier le chemin du journal d'erreurs PHP
php_value error_log /home/path/public_html/domain/PHP_errors.log

# Spécifier l'enregistrement de toutes les erreurs PHP
# [voir note de bas de page 3] # php_value error_reporting 999999999
php_value error_reporting -1

# Désactiver la longueur maximale de la chaîne d'erreurs
php_value log_errors_max_len 0

# Protéger le journal d'erreurs en empêchant l'accès du public

 Order allow,deny
 Deny from all
 Satisfy All

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X