Erreur 500 ou page blanche sur phpBB : trouver la vraie erreur et la corriger
Votre forum fonctionnait correctement et, après une mise à jour, l’installation d’une extension ou une modification du serveur, vous obtenez soudainement :
500 Internal Server Error
ou simplement une page entièrement blanche.
Le premier réflexe est souvent de penser :
« phpBB est cassé. »
En réalité, une erreur 500 ne donne presque aucune information sur la cause du problème.
Elle signifie simplement que le serveur n’a pas réussi à terminer correctement la requête.
La véritable erreur se trouve généralement ailleurs : dans les journaux du serveur, dans PHP, dans une extension, dans le cache ou dans la configuration de l’hébergement.
Ce tutoriel propose une méthode progressive pour trouver la cause réelle avant de modifier quoi que ce soit.
Important :
Ne réinstallez pas phpBB immédiatement.
Ne supprimez pas une extension active au hasard.
Ne modifiez pas la base de données sans savoir ce que vous cherchez.
La première étape consiste toujours à identifier l’erreur exacte.
1. Une erreur 500 n’est pas un diagnostic
Lorsque votre navigateur affiche :
Code : Tout sélectionner
500 Internal Server Error
cela ne signifie pas nécessairement qu’un fichier phpBB est endommagé.
Une erreur 500 peut être provoquée par exemple par :
une erreur PHP ;
une extension incompatible ;
un service Symfony introuvable ;
une erreur dans un fichier YAML ;
une classe PHP manquante ;
une version PHP incompatible ;
une migration incomplète ;
un cache impossible à écrire ;
des permissions incorrectes ;
une directive .htaccess refusée par le serveur ;
un module PHP manquant ;
une erreur de connexion à la base de données ;
un manque de mémoire PHP ;
un problème PHP-FPM ;
une configuration Apache ou Nginx incorrecte.
Deux erreurs 500 visuellement identiques peuvent donc avoir des causes totalement différentes.
La bonne méthode consiste à partir du symptôme pour retrouver l’erreur technique qui l’a provoqué.
2. Notez ce qui s’est passé juste avant
Avant de toucher au serveur, posez-vous une question très simple :
Quelle est la dernière chose qui a changé ?
Par exemple :
Code : Tout sélectionner
J’ai activé une extension.
ou :
Code : Tout sélectionner
J’ai mis phpBB à jour.
ou :
Code : Tout sélectionner
Mon hébergeur a changé la version de PHP.
ou :
Code : Tout sélectionner
J’ai modifié un fichier de configuration.
Cette information peut immédiatement réduire le champ de recherche.
Si le forum fonctionnait à 14 h 00 et qu’une extension a été activée à 14 h 05, puis que l’erreur est apparue à 14 h 06, cette extension mérite naturellement d’être vérifiée en priorité.
Cela ne prouve pas encore qu’elle est responsable.
Mais c’est un indice important.
3. Déterminer quelles pages sont touchées
Essayez plusieurs pages du forum.
Par exemple :
Code : Tout sélectionner
Page d’accueil
Un forum
Un sujet
Page de connexion
Panneau d’administration
Page spécifique d’une extension
Il existe une grande différence entre :
Code : Tout sélectionner
Tout le forum renvoie une erreur 500.
et :
Code : Tout sélectionner
Seule la page d’une extension renvoie une erreur 500.
Si seule une page particulière est touchée, la recherche peut être concentrée sur la fonctionnalité correspondante.
Si tout le forum est inaccessible, le problème est probablement situé plus tôt dans le démarrage de phpBB ou dans l’environnement serveur.
4. Reproduire le problème une seule fois
Les journaux d’un serveur peuvent contenir des centaines ou des milliers de lignes.
Pour trouver facilement la bonne erreur :
notez l’heure actuelle ;
ouvrez la page qui provoque l’erreur ;
reproduisez le problème une seule fois ;
consultez immédiatement les journaux du serveur.
Cela permet de rechercher uniquement les événements enregistrés au moment précis du test.
Évitez de recharger la page vingt fois.
Vous créeriez vingt erreurs identiques dans les journaux et rendriez le diagnostic moins lisible.
5. Chercher l’erreur PHP réelle
Sur de nombreux serveurs, les erreurs PHP sont enregistrées par le serveur Web ou par PHP-FPM.
Les emplacements varient selon l’hébergement.
Avec Apache sur certaines distributions Linux, on peut notamment rencontrer :
Code : Tout sélectionner
/var/log/apache2/error.log
Avec Nginx :
Code : Tout sélectionner
/var/log/nginx/error.log
Avec PHP-FPM, les erreurs peuvent également apparaître dans le journal du service PHP-FPM.
Par exemple :
Code : Tout sélectionner
journalctl -u php8.3-fpm
Le numéro de version dépend naturellement de votre installation.
Attention :
Ces chemins ne sont pas universels.
Sur un hébergement mutualisé, vous n’avez parfois aucun accès SSH. Le panneau de l’hébergeur peut alors proposer une rubrique :
Code : Tout sélectionner
Logs
Journaux
Erreurs PHP
Error log
Cherchez en priorité des termes comme :
Code : Tout sélectionner
Fatal error
Uncaught
Exception
TypeError
Parse error
Allowed memory size
Permission denied
Class not found
ServiceNotFoundException
SQLSTATE
C’est généralement cette ligne qui contient le véritable diagnostic.
6. Exemple : une classe PHP est introuvable
Imaginez un journal contenant :
Code : Tout sélectionner
PHP Fatal error: Uncaught Error:
Class "vendor\extension\service\example" not found
Le navigateur affiche seulement :
Code : Tout sélectionner
500 Internal Server Error
Mais le journal nous donne maintenant une information précise :
phpBB ou une extension essaie de charger une classe qui n’existe pas ou n’est pas accessible.
Il faut donc vérifier :
si le fichier correspondant existe ;
si son namespace est correct ;
si l’extension a été entièrement copiée ;
si le cache contient encore une ancienne définition ;
si la version installée de l’extension est complète.
Vous voyez la différence :
Erreur 500 est un symptôme.
Classe introuvable est une piste de diagnostic.
7. Exemple : une extension vient d’être activée
Si l’erreur apparaît immédiatement après l’activation d’une extension, celle-ci devient naturellement le premier suspect.
Si vous avez encore accès au PCA :
PCA -> Personnaliser -> Gérer les extensions
désactivez proprement l’extension concernée.
Si le PCA est inaccessible mais que vous disposez d’un accès SSH, phpBB propose une commande CLI.
Depuis la racine du forum :
Code : Tout sélectionner
php bin/phpbbcli.php extension:disable vendor/extension
Remplacez naturellement :
Code : Tout sélectionner
vendor/extension
par l’identifiant réel de l’extension.
Par exemple :
Code : Tout sélectionner
php bin/phpbbcli.php extension:disable exemple/demo
Ensuite, purgez le cache :
Code : Tout sélectionner
php bin/phpbbcli.php cache:purge
Puis testez à nouveau le forum.
Important :
Ne supprimez pas immédiatement les fichiers de l’extension.
Une extension activée possède un état enregistré dans phpBB.
La désactivation propre est préférable à la suppression brutale de son dossier.
8. Ne confondez pas désactiver et supprimer les données
Dans phpBB, ces opérations sont différentes.
Désactiver
L’extension cesse de fonctionner, mais ses données sont conservées.
Supprimer les données
Les migrations de désinstallation sont exécutées et certaines données peuvent être supprimées.
Pour un simple diagnostic :
désactivez uniquement l’extension.
Ne supprimez pas ses données juste pour vérifier si elle provoque une erreur 500.
9. Vérifier le cache phpBB
phpBB utilise un cache pour accélérer son fonctionnement.
Après une modification d’extension, de services, de templates ou de configuration, un cache obsolète peut parfois provoquer des comportements étranges.
Depuis la racine de phpBB :
Code : Tout sélectionner
php bin/phpbbcli.php cache:purge
Si cette commande fonctionne :
Code : Tout sélectionner
[OK] Le cache a été purgé.
retestez ensuite le forum.
Attention :
Une purge du cache n’est pas une solution universelle.
Si le problème revient immédiatement, le cache n’est probablement que la victime du problème, pas sa cause.
10. Le cache doit également être inscriptible
Une erreur fréquente apparaît lorsque PHP ne peut plus écrire dans le dossier :
Code : Tout sélectionner
cache/
Le journal peut alors contenir des messages ressemblant à :
Code : Tout sélectionner
Permission denied
ou :
Code : Tout sélectionner
Failed to write cache file
Dans ce cas, vérifiez le propriétaire et les permissions du dossier.
Sur un serveur Linux classique utilisant Apache ou PHP-FPM sous l’utilisateur :
Code : Tout sélectionner
www-data
le serveur doit pouvoir écrire dans les dossiers nécessaires.
Ne résolvez jamais cela en mettant tout phpBB en 777.
Le mode :
Code : Tout sélectionner
777
donne inutilement des droits d’écriture à tout le monde.
La bonne configuration dépend de votre serveur, de votre utilisateur système et de votre hébergement.
11. Vérifier la version PHP
Une mise à jour PHP peut provoquer soudainement des erreurs dans une extension ancienne.
Vérifiez la version PHP utilisée en ligne de commande :
Code : Tout sélectionner
php -v
Mais attention :
la version PHP utilisée dans SSH peut parfois être différente de celle utilisée par Apache ou PHP-FPM.
Par exemple :
Code : Tout sélectionner
SSH : PHP 8.2
Site Web : PHP 8.3
Dans ce cas, un test uniquement effectué avec :
Code : Tout sélectionner
php -v
ne suffit pas.
Vérifiez également la version PHP réellement utilisée par votre site dans votre panneau d’hébergement ou dans les informations système du PCA lorsque celui-ci reste accessible.
12. Après une mise à jour PHP
Si votre forum fonctionnait avec PHP 8.1 et que l’erreur est apparue immédiatement après un passage en PHP 8.3, vérifiez :
la compatibilité de votre version de phpBB ;
la compatibilité de chaque extension active ;
la compatibilité de votre style ;
la présence des extensions PHP nécessaires ;
les nouveaux messages d’erreur dans les logs.
Une extension peut fonctionner correctement avec une ancienne version PHP et provoquer une erreur fatale avec une version plus récente.
13. Vérifier si une extension PHP manque
phpBB et certaines extensions utilisent des modules PHP supplémentaires.
Vous pouvez afficher les modules chargés en ligne de commande avec :
Code : Tout sélectionner
php -m
Vous pouvez rechercher un module particulier :
Code : Tout sélectionner
php -m | grep mbstring
ou :
Code : Tout sélectionner
php -m | grep intl
Mais, encore une fois, vérifiez que la ligne de commande utilise bien le même environnement PHP que le site Web.
Si un journal indique explicitement qu’une fonction PHP n’existe pas, recherchez le module qui fournit cette fonction avant de modifier phpBB.
14. Vérifier l’espace disque
Un serveur dont le disque est plein peut provoquer des erreurs surprenantes :
cache impossible à écrire ;
sessions impossibles à enregistrer ;
uploads interrompus ;
journaux impossibles à écrire ;
base de données perturbée.
Sous Linux :
Code : Tout sélectionner
df -h
regardez notamment la partition qui contient votre site et votre base de données.
Si elle affiche :
Code : Tout sélectionner
100%
vous avez probablement trouvé un problème important.
15. Vérifier la mémoire PHP
Un journal contenant :
Code : Tout sélectionner
Allowed memory size exhausted
indique que PHP a atteint sa limite de mémoire.
La ligne précise généralement :
la quantité de mémoire disponible ;
la quantité demandée ;
le fichier où l’erreur s’est produite.
Ne doublez pas immédiatement la mémoire disponible sans chercher pourquoi elle est consommée.
Une extension défectueuse ou une boucle peut consommer anormalement beaucoup de mémoire.
Augmenter indéfiniment la limite ne corrige pas la cause.
16. Vérifier la base de données
Lorsque le problème vient de MariaDB ou MySQL, phpBB affiche parfois un message plus précis :
Code : Tout sélectionner
General Error
SQL ERROR
Mais certaines erreurs peuvent également finir en erreur 500.
Le journal peut contenir :
Code : Tout sélectionner
Table ... doesn't exist
Unknown column ...
Duplicate column ...
SQLSTATE...
Ces messages sont particulièrement importants après une mise à jour ou une migration d’extension.
Ne créez pas immédiatement la table ou la colonne à la main.
Il faut d’abord déterminer :
quelle migration devait la créer ;
si la migration a été exécutée ;
quelle version de l’extension est installée ;
si les fichiers correspondent à la version enregistrée en base.
Une modification SQL improvisée peut rendre la prochaine migration encore plus difficile.
17. Après une mise à jour phpBB
Si l’erreur apparaît après une mise à jour de phpBB, vérifiez que vous n’avez pas simplement remplacé une partie des fichiers.
Une installation incohérente peut contenir par exemple :
Code : Tout sélectionner
certains fichiers phpBB 3.3.17
+
certains fichiers phpBB 3.3.15
ou :
Code : Tout sélectionner
fichiers 3.3.17
+
base de données dont la mise à jour n’est pas terminée
Cela peut provoquer des erreurs particulièrement difficiles à comprendre.
Avant une mise à jour importante :
faites une sauvegarde des fichiers ;
faites une sauvegarde de la base ;
vérifiez les extensions ;
vérifiez le style ;
terminez complètement la procédure de mise à jour.
18. Vérifier le fichier .htaccess
Apache peut également produire une erreur 500 lorsqu’une directive présente dans :
Code : Tout sélectionner
.htaccess
n’est pas autorisée ou n’est pas comprise.
Cela peut arriver après :
une migration vers un autre hébergeur ;
un changement de configuration Apache ;
l’ajout d’une règle de réécriture ;
l’installation d’un système SEO ;
une modification manuelle.
Si le journal Apache mentionne explicitement :
Code : Tout sélectionner
.htaccess
Invalid command
RewriteRule
Options not allowed here
concentrez-vous sur cette configuration.
Ne désactivez pas arbitrairement le fichier .htaccess de phpBB sans savoir quelles protections il contient.
19. Différence entre une page blanche et une erreur 500
Une page blanche peut correspondre à une erreur PHP dont l’affichage est désactivé.
Dans un environnement de production, c’est normal de ne pas afficher les détails techniques directement aux visiteurs.
Imaginez une erreur contenant :
Code : Tout sélectionner
/var/www/example/config.php
mot de passe
chemin interne
nom de base
Afficher ce type d’information publiquement serait dangereux.
C’est pour cette raison qu’un serveur correctement configuré en production écrit généralement les détails dans ses journaux au lieu de les montrer dans la page Web.
Donc :
page blanche ne signifie pas absence d’erreur.
Regardez les logs.
20. N’activez pas display_errors en production au hasard
On trouve souvent sur Internet le conseil :
Code : Tout sélectionner
display_errors = On
Cela peut être utile dans un environnement de développement contrôlé.
Mais sur un forum public, afficher toutes les erreurs PHP directement aux visiteurs peut révéler :
les chemins du serveur ;
les noms de fichiers internes ;
la structure du code ;
certaines informations de configuration.
Préférez les journaux serveur.
21. Une méthode simple en cinq étapes
Face à une erreur 500, retenez cette procédure :
Identifier la dernière modification.
Qu’est-ce qui a changé juste avant ?
Reproduire une seule fois.
Notez l’heure et provoquez précisément l’erreur.
Lire le journal correspondant.
Cherchez Fatal error, Exception, TypeError, SQLSTATE, Permission denied, etc.
Corriger uniquement la cause identifiée.
Ne modifiez pas cinq choses simultanément.
Recommencer le même test.
Vous pourrez alors savoir si votre correction a réellement résolu le problème.
22. Exemple complet
Imaginons :
Code : Tout sélectionner
Le forum fonctionne.
J’installe une extension.
Je l’active.
La page d’accueil renvoie immédiatement une erreur 500.
Mauvaise méthode :
Code : Tout sélectionner
Supprimer le cache.
Changer PHP.
Modifier .htaccess.
Supprimer des tables.
Réinstaller phpBB.
Vous ne saurez plus quelle modification a réellement changé le comportement.
Bonne méthode :
Code : Tout sélectionner
1. Noter l’heure.
2. Recharger une seule fois la page.
3. Lire les erreurs PHP.
4. Identifier l’extension dans la trace.
5. Désactiver proprement cette extension.
6. Purger le cache.
7. Tester.
Si le forum fonctionne de nouveau, vous avez isolé le composant concerné.
Vous pouvez ensuite rechercher précisément pourquoi cette extension plante.
23. Ce qu’il ne faut surtout pas faire
Face à une erreur 500 ou une page blanche, évitez :
mettre tout le forum en chmod 777 ;
supprimer une extension active directement par FTP ;
supprimer des tables SQL au hasard ;
modifier le cœur de phpBB ;
réinstaller immédiatement tout le forum ;
modifier plusieurs paramètres simultanément ;
publier vos mots de passe dans un forum de support ;
publier l’intégralité de config.php ;
afficher toutes les erreurs PHP aux visiteurs ;
recharger la page cinquante fois avant de lire les logs.
24. Informations utiles lorsque vous demandez de l’aide
Si vous ouvrez un sujet de support, fournissez au minimum :
Code : Tout sélectionner
Version de phpBB :
Version PHP :
Base de données :
Serveur Web :
Hébergeur :
Dernière modification effectuée :
Page concernée :
Erreur affichée :
Dernière erreur correspondante dans les logs :
Extensions récemment installées ou mises à jour :
Si vous copiez une erreur de journal, retirez auparavant :
les mots de passe ;
les clés API ;
les cookies ;
les jetons ;
les données personnelles ;
toute information confidentielle.
25. Checklist rapide
Avant de conclure que phpBB est cassé :
J’ai identifié la dernière modification effectuée.
J’ai reproduit le problème une seule fois.
J’ai consulté les erreurs Apache/Nginx/PHP-FPM.
J’ai recherché un Fatal error ou une Exception.
J’ai vérifié les extensions récemment modifiées.
J’ai vérifié la version PHP.
J’ai vérifié l’espace disque.
J’ai vérifié que le cache est inscriptible.
J’ai vérifié les permissions sans utiliser 777.
J’ai vérifié si la base de données signale une table ou une colonne manquante.
Je n’ai modifié qu’une chose à la fois.
À retenir
Une erreur 500 n’est presque jamais suffisamment précise pour être corrigée directement.
La bonne question n’est pas :
« Comment supprimer l’erreur 500 ? »
La bonne question est :
« Quelle erreur le serveur a-t-il rencontrée pour produire cette erreur 500 ? »
Le navigateur montre le symptôme.
Les journaux montrent généralement la cause.
Avec une méthode progressive :
Code : Tout sélectionner
reproduire
→ lire
→ comprendre
→ corriger
→ retester
un problème qui semblait totalement opaque devient souvent beaucoup plus simple à résoudre.
Si vous utilisez HUCIAL Diagnostic, vous pouvez également générer un rapport de support afin de fournir automatiquement une partie des informations techniques utiles au diagnostic, sans communiquer vos mots de passe ni vos secrets.