Comment afficher et consigner les erreurs PHP sur IIS7?

29

Nous exécutons PHP 5.2.5 sur un serveur IIS 7 et nous avons des problèmes pour rendre les erreurs PHP visibles ... Pour le moment, chaque fois que nous avons une erreur PHP, le serveur renvoie une erreur 500 avec le message "La page ne peut pas être s'affiche car une erreur de serveur interne s'est produite. "

Cela peut être un bon paramètre pour les sites de production mais c'est plutôt ennuyeux sur un serveur de développement ... ;-)

J'ai essayé de configurer php.inipour afficher les erreurs à l'écran ainsi que de les enregistrer dans un dossier spécifique mais il semble que le serveur détecte toutes les erreurs avant et empêche et gère par PHP ...

Est-ce que quelqu'un sait ce que nous devons faire pour que IIS affiche les erreurs PHP à l'écran? Tout lien, conseil ou tutoriel sur le sujet serait apprécié!

Ben
la source
Tout d' abord, assurez -vous que vous avez ces: log_errors=1, error_reporting=-1, log_errors_max_len=0.
Pacerier
ini_set("display_errors", "on");ajoutez ces lignes dans le fichier php.
ELITE

Réponses:

35

Juste pour vérifier, avez-vous configuré la journalisation error_reporting = E_ALLet display_errors = Ondans votre php.ini? En général, cela suffit pour afficher ces erreurs dans IIS 7.

Ensuite, jetez un œil à vos paramètres IIS, car ils peuvent être définis pour afficher uniquement les messages d'erreur localement. Dans l'éditeur de configuration IIS 7, cela se trouve sous system.webServer-> httpErrors. Vous devrez modifier errorMode en Détaillé de DétailléLocalOnly. De toute évidence, cela signifie désormais que toute personne parcourant votre site sera en mesure de voir l'erreur.

entrez la description de l'image ici

entrez la description de l'image ici

Alternativement, si vous souhaitez les garder locaux, vous pouvez utiliser Remote Desktop pour vous connecter au serveur et exécuter l'application à partir de là, si vous le pouvez.

Sam Cogan
la source
1
Oui, j'ai vérifié et tout est correctement configuré.
Ben
Ajout d'informations de dépannage supplémentaires
Sam Cogan
1
Changer le errorMode en "Détaillé" de "DétailléLocalOnly" a fait l'affaire. Merci!
Ben
1
J'ai également dû supprimer la collection d'erreurs HTTP sous system.webServer. Je n'ai pas travaillé avec PHP avant moi.
1
Veuillez souligner cela system.webServeravec mon sang et ajouter une note: "Oui, il y a un combo".
DiGi
2

Je voulais juste ajouter que "existingResponse" devrait être réglé sur "PassThrough". Je n'ai reçu aucun vrai message d'erreur sans ce paramètre supplémentaire.

Bolli
la source
1
Où se trouve ce paramètre?
Eugene Mala
0

Vous pouvez le faire facilement en utilisant l'interface graphique du gestionnaire IIS. Sélectionnez votre site et double-cliquez sur Pages d'erreur. Appuyez ensuite sur "Modifier les paramètres de fonctionnalité ..." et sélectionnez l'option "erreurs détaillées" au lieu de "par défaut" erreurs détaillées pour les demandes locales et pages d'erreur personnalisées pour les demandes distantes ". Voilà, c'est aussi simple que ça!

Jeroen Aarts
la source
Où peut-on alors afficher les journaux et les erreurs?
JukEboX
0

J'ai dû entrer dans les paramètres du serveur Web dans la configuration php et il y a un paramètre là-dedans pour le rapport d'erreurs et est réglé sur la production par défaut. J'ai dû le changer en développement même après avoir changé le php.ini et la suggestion ici. J'utilise iis 7.5 sur 2008 R2.

naps1saps
la source