web-dev-qa-db-fra.com

Comment puis-je faire PHP afficher l'erreur au lieu de me donner 500 erreur de serveur interne

Cela n'est jamais arrivé auparavant. Habituellement, il affiche l'erreur, mais maintenant, il me donne une erreur de 500 serveur interne. Bien sûr, avant, quand il affichait l'erreur, il s'agissait de serveurs différents. Maintenant, je suis sur un nouveau serveur (j'ai la racine complète, donc si je dois le configurer quelque part dans le fichier php.ini, je peux le faire.) Ou peut-être que c'est quelque chose avec Apache?

Je l'ai accepté en transférant simplement le fichier sur mon autre serveur et en l'exécutant sur cet emplacement pour rechercher l'erreur, mais c'est devenu trop fastidieux. Y'a t'il un moyen d'arranger cela?

124
Rob

Vérifiez les paramètres error_reporting, display_errors et display_startup_errors dans votre fichier php.ini. Ils doivent être définis sur E_ALL et "On" respectivement (bien que vous ne devriez pas utiliser display_errors sur un serveur de production, désactivez-le et utilisez plutôt log_errors si/lorsque vous le déployez). Vous pouvez également modifier ces paramètres (à l'exception de display_startup_errors) au tout début de votre script pour les définir au moment de l'exécution (bien que vous ne puissiez pas intercepter toutes les erreurs de cette façon):

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

Après cela, redémarrez le serveur.

185
awgy

Il est à noter que si votre erreur est due à .htaccess, par exemple un rewrite_module manquant, vous verrez toujours l'erreur de serveur interne 500.

16
dtbarne

Utilisez "php -l <nom_fichier>" (c'est un "L") à partir de la ligne de commande pour générer l'erreur de syntaxe qui pourrait provoquer PHP pour générer l'erreur d'état 500. Cela produira quelque chose comme:

Erreur d'analyse PHP: erreur de syntaxe, '}' inattendu dans <nom du fichier> à la ligne 18

10
Aaron

Essayez de ne pas y aller 

MAMP > conf > [your PHP version] > php.ini

mais 

MAMP > bin > php > [your PHP version] > conf > php.ini

et le changer là-bas, cela a fonctionné pour moi ...

3
von verletzt

L'activation de l'affichage d'erreur à partir de PHP code ne fonctionne pas pour moi. Dans mon cas, en utilisant NGINX et PHP-FMP, je dépiste le fichier journal en utilisant grep . Par exemple, je connais le nom du fichier mycode.php qui provoque l'erreur 500, mais je ne sais pas quelle ligne. Depuis la console, j'utilise ceci:

/var/log/php-fpm# cat www-error.log | grep mycode.php

Et j'ai la sortie:

[04-Apr-2016 06:58:27] PHP Parse error:  syntax error, unexpected ';' in /var/www/html/system/mycode.php on line 1458

Cela m'aide à trouver la ligne où j'ai la faute de frappe.

3
Hao Nguyen

Attention à vérifier si 

display_errors

ou

error_reporting

est actif (pas un commentaire) ailleurs dans le fichier ini.

Mon serveur de développement a refusé d'afficher les erreurs après la mise à niveau vers Kubuntu 16.04 - J'ai vérifié php.ini de nombreuses fois ... s'est avéré qu'il y avait un diplay_errors = off; environ 100 lignes sous ma 

display_errors = on;

Alors rappelez-vous que le dernier compte!

2
Max

Si tout échoue, essayez de déplacer (c'est-à-dire dans bash) tous les fichiers et répertoires "à distance" et de les rajouter un par un.

Je viens de découvrir de cette façon que mon fichier .htaccess faisait référence à un fichier .htpasswd non existant. (#idiot)

0
WoodrowShigeru