Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

Définition

Comment déboguer une page blanche ou une erreur 500

Lorsque vous essayez de visiter un site Web et que vous voyez le message d'erreur « 500 Internal Server Error », cela signifie qu'un incident s'est produit sur le site web. L'erreur peut être particulièrement frustrante car elle peut ne pas vous donner d'informations sur la cause spécifique de l'erreur. Cet article vous montre comment déboguer une erreur 500 dans votre site web.

Procédure

Quelle est la différence entre page blanche et erreur 500 ?

Une page blanche n'est pas forcément une erreur 500. Et vice-versa. Une erreur 500 signifie qu'une erreur s'est produit lors du traitement de la requête HTTP. Ceci pourrait être une erreur d'exécution du script associé, un problème d'accès à une ressource, ... qui fait que le serveur web renvoie une réponse avec le code d'erreur 500. Une page blanche, en revanche, signifie que le serveur web n'a renvoyé aucun corps dans sa réponse, voire même aucune réponse.

Dans certaines situations, une erreur 500 fait que le serveur web n'a aucune réponse à apporter, et donc cause une page blanche. C'est éventuellement le cas quand aucune page d'erreur 500 n'a été configuré, ou également si la sortie d'erreur a été désactivé et ainsi le site n'a aucun message d'erreur à mentionner.

Certains navigateurs tel que Chrome et Internet Explorer affichent leur propre page d'erreur 500 lorsqu'ils reçoivent le code d'erreur en en-tête HTTP sans que le serveur n'apporte aucun contenu sur le corps de la réponse :

Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

Les erreurs 500 sont souvent liés à un problème au niveau d'un des fichiers .htaccess agissant sur l'URL, ou une erreur PHP. Ainsi, en activant l'affichage d'erreurs avec l'option php.ini display_errors, vous devriez voir apparaître les erreurs PHP à la place de l'erreur 500.

Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

 

Comment déterminer qu'il s'agit bien d'une erreur 500 ?

Afin de déterminer que vous avez bien une erreur 500, il vous sera nécessaire de regarder le code d'erreur HTTP renvoyé par le serveur web à votre navigateur web. Ceci peut être identifié grâce à l'onglet « Réseau » du console développeur de votre navigateur :

Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

Comment identifier les problèmes à l'origine de l'erreur 500 ?

Le premier reflexe a adopter est de consulter les fichiers logs associés à la requête HTTP : le fichier log Apache et le fichier log PHP. Les 300 derniers événements vous concernant sur le fichier log Apache peut être consulté depuis l'icône « Erreurs » sur votre interface cPanel, tandis que le fichier log PHP est généralement le fichier « error_log » visible à côté du fichier PHP concerné :

Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

Il est toutefois possible que les erreurs ne sont pas affichés sur les logs. Ceci peut être le résultat d'une configuration qui empêche l'affichage et/ou le logging des erreurs PHP. En savoir plus.

Cependant, si vous utilisez WordPress, Prestashop ou Joomla, il est fort possible qu'aucun changement ne soit visible. Dans ce cas, il sera nécessaire d'activer l'affichage des erreurs dans leurs fichiers de configuration respectives. 

Comment activer le mode débogage de votre site ?

La plupart des CMS tel que WordPress disposent d'un système interne de gestion des erreurs, ce qui empêche les paramètres PHP en place de traiter et effectuer des actions en fonction de l'erreur rencontré. En activant le mode débogage, vous demandez à ce système interne de gestion d'erreurs d'afficher les erreurs et/ou augmenter la verbosité des fichiers logs.

Pour activer le mode débogage, vous pouvez vous connecter directement au "Gestionnaire de fichiers" accessible depuis votre interface cPanel et éditer le fichier de configuration associé permettant d'activer ce mode.

Comment activer le mode debug sur Wordpress ?

Si votre site a été créé avec WordPress, vous pouvez activer le mode debug depuis le fichier "wp-config.php" se trouvant à la racine de votre hébergement web. Pour cela, il vous suffit de modifier la constante "WP_DEBUG" par la valeur "true" à la place de "false". 

Vous pouvez aussi, si vous le désirez, ajouter la constante WP_DEBUG_LOG afin d'enregistrer les erreurs dans le fichier "wp-content/debug.log".

Il est nécessaire aussi de vérifier que la constante "WP_DEBUG_DISPLAY" ne soit pas défini sur votre fichier de configuration. Dans le cas contraire, il sera aussi nécessaire de passer cette valeur à true. 

Le fichier de configuration devrait ressembler à ceci :

Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

Comment activer le mode Debug sur Prestashop ?

Sur Prestashop, vous pouvez activer le mode debug en vous rendant sur le fichier "define.inc.php" se trouvant dans le dossier "config". 

Il vous sera nécessaire de modifier la constate "_PS_MOD_DEV_" par "true" à la place de "false". Si besoin, vous pouvez aussi activer le mode "_PS_DEBUG_PROFILING_" qui vous permettra de disposer de plus d'informations.

Le fichier de configuration devrait ressembler à ceci :

 

Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

Comment activer le mode Debug sur Joomla ?

Pour Joomla, vous pouvez activer le mode debug en éditant le fichier configuration.php. En effet, dans ce fichier, il vous faut modifier la variable "$debug" par 1 pour l'activer. Il est nécessaire aussi de modifier la variable $error_reporting par "maximum" afin que toutes les erreurs s'affichent. 

Le fichier de configuration devrait ressembler à ceci :

Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

Comment activer le mode debug sur d'autres CMS ?

Il est fort possible que vous utilisiez un autre CMS. Afin de connaître la manipulation pour activer le mode debug, vous pouvez aussi taper sur le moteur recherche le "nom du CMS + Debug". En effet, cela devrait vous conduire directement sur un tutoriel vous expliquant la manipulation à effectuer pour activer ce mode. 

Comprendre les différentes erreurs PHP

Il est relativement simple de comprendre l'origine d'une erreur 500. En effet, il s'agit très souvent des mêmes erreurs qui reviennent. 

1. La première erreur la plus courante est l'erreur "Parse error". En effet, celle-ci indique souvent un problème de syntaxe (une erreur au niveau de la programmation de votre code). L'erreur se défini comme suit:

  • Parse Error: défini qu'il s'agit d'une erreur de code
  • Un message en anglais est visible afin de fournir plus d'informations sur le type d'erreur
  • Le chemin vers le fichier sur lequel l'erreur se trouve avec la ligne concerné par l'erreur

Si nous prenons exemple sur le fichier index.php de notre site Wordpress sur lequel il manque un point-virgule à la fin de la ligne 17, le fichier Web sur lequel se trouve l'erreur est le suivant :

Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

L'erreur visible en vous rendant sur l'URL sera la suivante :

Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

2. L'erreur "Parse error: syntax error, unexpected end of file" indique qu'il semble manquer quelque chose à la fin du fichier.

Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

Dans ce code, il manque par exemple l'accolade fermant l'instruction if.

3. L'erreur Parse Error: syntax error, unexpected (T_STRING), expecting ','or';' est souvent dû à une erreur liée au guillement se trouvant dans votre code. 

Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

En effet, sur ce code, il manque l'antislash sur le mot "d'erreur" comme dans le code suivant afin que cela fonctionne: 

Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

4. Vous pouvez aussi visualiser une erreur du type "Fatal Error". Cette erreur est l'une des erreurs les plus graves que vous pouvez rencontrer. De plus, elle provoque l'arrêt de votre script. Elle est défini comme suit: 

  • Fatal Error: Ce message indique que l'erreur est fatale et bloquante pour le fonctionnement de votre script
  • Message: Un message suit le code "Fatal error" afin de vous expliquer la raison de l'erreur
  • Chemin d'accès: le chemin d'accès ainsi que la ligne posant problème sont indiqués

Cette erreur indique souvent qu'une fonction n'a pas été définie comme dans le code suivant: 

Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

Vous allez de ce fait, voir l'erreur suivante: Fatal Error: Uncaught Error: Call to undefined function 

Cette erreur est souvent due à l'une des choses suivantes: 

  • Vous avez une faute de frappe dans la fonction que vous avez définie
  • Le fichier PHP contenant la fonction n'a pas été chargé sur votre script
  • Si la fonction fait partie d'une extension PHP, l'extension PHP n'est peut-être pas chargée

5. Il est fort possible que vous ayez l'erreur "Fatal Error: cannot redeclare" indiquant que la fonction est défini une seconde fois. Le code pourrait ressembler à celui-ci: 

Diagnostiquer et corriger une erreur 500 sur un site hébergé sur cPanel

Il est tout à fait possible d'éviter cette erreur en:

  • changeant le nom de la fonction redéfinie
  • Il peut aussi s'agir d'un problème de namespace. Dans ce cas, il est nécessaire de vérifier le namespace et indiquer le chemin d'accès complet à la fonction

6. Vous pouvez avoir l'erreur "Fatal Error: allowed memory size exhausted".

Cela indique que le script PHP utilise trop de mémoire vive et dépasse la valeur maximum autorisé sur PHP.INI. Il s'agit de la valeur "memory_limit". Cette valeur peut être modifiée par vos soins sur les formules cPanel. Si malgré l'augmentation de la valeur à une valeur suffisamment haute le problème persiste, il est peut-être possible qu'une opération consummant beaucoup de mémoire se réitère trop souvent (voire à l'infini) dans votre script PHP. Les boucles infinies sont donc également des causes possibles de ce type d'erreur.

7. L'erreur "Fatal Error: Maximum execution time exceeded" signifie un dépassement du temps d'exécution de votre script. Vous pouvez modifier pour cela, la valeur "max_execution_time" dans votre configuration PHP.INI. Notez toutefois que tout processus s'exécutant de plus de 490 secondes ne sont pas autorisés sur nos formules d'hébergement mutualisé cPanel, mais surtout que si une page requiert un max_execution_time plus haute, cela voudrait également dire qu'elle va se charger plus lentement, ce qui n'est généralement pas souhaitable. Si la page qui a généré cette erreur traite beaucoup de données, nous vous conseillons d'effectuer des traitements en lots. Par exemple, au lieu de traiter 1000 produits à chaque ouverture de la page, il serait plus adapté de traiter par lots de 100 produits, via des requêtes AJAX, par exemple. Et vous aurez un TTFB (Time-To-First-Byte) plus faible.

8. L'erreur "Fatal error: Uncaught Error: Call to undefined function mysql_connect()" signifie que le module "mysql" n'est pas chargé sur la version PHP utilisé par vos soins. L'erreur se présente lorsque:

  • La version PHP 7 ou supérieur est utilisé alors que votre site n'est pas compatible avec cette version
  • Vous utilisez une version PHP5 mais le module "MySQL" n'est pas activé

Vous pouvez modifier aisément la version PHP en vous rendant sur "Sélectionner une version PHP" se trouvant sur votre interface cPanel.

9. L'erreur "Permission denied" signifie que PHP ne dispose pas des droits pour accéder à un fichier ou dossier défini. L'erreur est souvent visible sous la forme suivante:

Warning file_put_contacts(/home/c123456/public_html/dossier/fichier.php): failed to open stream: Permission denied in /home/c123456/index.php on line 20

Dans ce cas, il est nécessaire de vérifier les chmod sur vos fichiers et dossiers. En principe les chmod sont les suivants: 

  • 644 : Pour un fichier
  • 755 : pour un dossier

10. L'erreur "No such file or directory" indique que PHP a besoin d'inclure un fichier qui ne semble pas présent sur votre espace FTP. L'erreur représente à la suivante: 

Warning: require_once(/home/c123456/public_html/dossier/fichier.php): failed to open stream: No such file or directory in /home/c123456/public_html/index.php on line 20

Il faut dans ce cas là : 

  • Vérifier que le fichier concerné existe bien sur votre espace FTP. Si ce n'est pas le cas, il sera nécessaire de ré-uploader le fichier.
  • Vérifier que les droits sur le fichier sont bien les bons, il s'agit du CHMOD. Les dossiers sont généralement en chmod 755 et les fichiers en chmod 644.
  • Vérifier que le chemin indiqué au niveau de votre script PHP est bien le bon.

11. Vous pouvez visualiser l'erreur "Warning:session_start(): Cannot send session cookie headers already sent" qui indique qu'un flux a déjà été généré et qu'il n'est de ce fait plus possible d'utiliser la fonction "session_start". Cette erreur est visible sous la forme suivante: 

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/c123456/public_html/dossier/session.php:2 in /home/c123456/public_html/dossier/session.php on line 20

Les 3 causes pouvant provoquer cette erreur sont les suivantes :

  • Une directive affichant du texte avant l'appel à la fonction
  • Un problème de jeu de caractères (notamment le BOM_UTF8). Cette erreur se situe toujours sur la première ligne de votre code
  • Des caractères invisibles à l'écran mais qui sont présentes dans vos fichiers. Les éditeurs de code comme Visual Studio Code vous permettent de les constater.

Pour aller plus loin

Conclusion

Vous êtes désormais en mesure de connaître la raison d'une Erreur 500 ou page blanche. Vous êtes aussi en mesure de dépanner votre site internet.

N'hésitez pas à poser vos questions et/ou remarques en commentaire. 

Notez cet article

2.5 / 5
2 avis


Vous avez noté 0 étoile(s)

Cet article vous a-t-il été utile ?

Merci !

N'hésitez pas à commenter nos pages afin de nous aider à les améliorer si besoin.

Vous souhaitez nous laisser un commentaire concernant cet article ?

Si cela concerne une erreur dans la documentation ou un manque d'informations, n'hésitez pas à nous en faire part depuis le formulaire.






Pour toutes questions non liées à cette documentation ou problèmes techniques sur l'un de vos services, cliquez ici si vous souhaitez contacter le support commercial ou le support technique