Répertoire d'articles
Hier après-midi, j'ai configuré l'outil de gestion de bases de données Adminer sur le serveur. Adminer est léger et facile à utiliser ; un simple fichier PHP suffit, contrairement à phpMyAdmin qui nécessite de nombreuses dépendances. J'ai téléchargé la dernière version depuis le site officiel, je l'ai installée sur le serveur, j'ai défini les permissions et j'ai ouvert mon navigateur, prêt à l'essayer.
Puis, plus rien.

J'ai actualisé la page trois fois, les doigts douloureux à force d'appuyer sur F5. Toujours rien. J'ai ouvert les outils de développement du navigateur ; ils affichaient une erreur 200 OK, mais le corps de la réponse était vide. J'étais complètement abasourdi. Que se passait-il ?
J'y ai réfléchi un instant. Un problème de permissions ? J'ai vérifié, et elles étaient bien à 755. Un problème de compatibilité avec PHP ? J'ai vérifié, et c'est PHP 8.2, ce qui est correct. Le fichier lui-même pourrait-il être corrompu ? J'en ai téléchargé une nouvelle copie, je l'ai écrasée, et elle est toujours vide.
Pour une raison inexplicable, je me suis dit : pourquoi ne pas essayer de changer de nom ?
J'ai renommé adminer.php en adminer1.php et j'ai actualisé la page.
L'accès a été réussi.
J'étais vraiment perplexe. Le même fichier, le même code, le même serveur, et il est accessible simplement en changeant le nom ? Quelle logique mystérieuse !
Le problème d'un fichier adminer.php vide
J'ai réalisé plus tard qu'il ne s'agissait pas d'une superstition ; c'était la mise en cache PHP qui était à l'origine du problème.
OPcache, abréviation d'Opcode Cache, est une extension d'optimisation des performances pour PHP. Son principe est simple : PHP étant un langage interprété, chaque requête nécessite la compilation du code PHP en opcode avant son exécution. OPcache met en cache le résultat compilé en mémoire, permettant ainsi aux requêtes suivantes d'utiliser directement cette version sans recompilation, ce qui améliore considérablement les performances.
Mais c'est là que réside le problème.
Auparavant, adminer.php affichait « Fichier introuvable » (j'avais téléchargé le mauvais fichier), et OPcache avait mis en cache le résultat compilé de ce contenu incorrect. Par la suite, j'ai remplacé adminer.php par le code correct, mais OPcache l'a ignoré et a continué à lire l'ancien cache en mémoire, ce qui a entraîné l'affichage d'une page blanche ou du même message d'erreur.
Lorsque vous le renommez en adminer1.php, il devient un chemin de fichier complètement nouveau pour OPcache, qui le rechargera et le résoudra correctement.
C'est comme si vous aviez déjà emprunté un nouveau livre, mais que la fiche de la bibliothèque portait encore la cote de l'ancien. Forcément, quand vous le cherchez en rayon, il est vide. Mais si vous modifiez le titre du livre, la bibliothèque vous créera une nouvelle fiche, et vous pourrez alors le trouver.
Raison 1 : Le cache OPcache provoque des espaces vides
Comment y faire face?
Redémarrez le service PHP-FPM et videz le cache OPcache.
# 查看正在运行的PHP版本
php -v
# 重启对应的PHP-FPM(例如PHP 8.5)
sudo systemctl restart php8.5-fpm
# 或者重启所有PHP-FPM服务
sudo systemctl restart php*-fpmAprès le redémarrage, renommez le fichier en adminer.php, actualisez la page web (il est recommandé d'appuyer sur Ctrl+F5 pour forcer l'actualisation du navigateur), et le problème devrait être résolu.
Mais l'histoire n'est pas encore terminée.
Après avoir redémarré PHP-FPM, j'ai rétabli le fichier adminer.php, actualisé la page, mais elle restait blanche. J'étais complètement perplexe.
Raison 2 : Restrictions des règles de configuration Nginx
Ceci nous amène à la deuxième raison possible.
Le fichier de configuration Nginx peut contenir des règles spécifiques restreignant l'exécution d'adminer.php.
J'avais configuré Fail2Ban dans le panneau HestiaCP et créé une règle de correspondance exacte pour adminer.php afin d'empêcher les attaques par force brute. Cette règle intégrait en dur le nom de fichier adminer.php ; ainsi, en le renommant en adminer1.php, vous contourniez cette règle Nginx et pouviez y accéder normalement.
La méthode de dépannage est simple : recherchez les entrées codées en dur dans la configuration Nginx.
sudo grep -rn "adminer.php" /etc/nginx/Si vous trouvez des règles comme `location = /adminer.php { … }`, cela signifie que Nginx traite ce nom de fichier de manière particulière. Supprimez-le ou modifiez-le.
Raison 3 : Paramètres d’affichage des erreurs PHP
La troisième raison est plus subtile.
Le script PHP est intercepté ou génère une erreur, mais la page désactive l'affichage des erreurs (display_errors = Off). En production, PHP masque les erreurs par défaut et affiche une page blanche. Si votre fichier d'entrée (par exemple, index.php) plante lors de l'inclusion de « ./adminer.php », la page deviendra simplement blanche.
Dans ce cas, la consultation du journal des erreurs est la méthode la plus fiable :
# 查看Nginx错误日志
sudo tail -n 20 /var/log/nginx/error.log
# 或者查看HestiaCP对应域名的error日志
sudo tail -n 20 /var/log/nginx/domains/adminer.domain.com.error.logLe journal vous indiquera la véritable raison de l'écran blanc.
Pour être honnête, j'ai finalement trouvé le problème en consultant le fichier error.log. Il s'avérait qu'adminer.php appelait une extension PHP inexistante et que display_errors était désactivé ; la page était donc blanche, mais le journal des erreurs l'avait clairement enregistré.
Solutions et étapes de dépannage
Cet incident m'a profondément marqué.
Les problèmes techniques sont souvent plus complexes qu'il n'y paraît. Un fichier adminer.php vide peut sembler, au premier abord, un simple problème de fichier, mais une analyse plus approfondie pourrait révéler un problème de cache, puis, plus loin, un problème de configuration, et enfin, un problème au niveau du code lui-même.
Si vous n'êtes pas programmeur, vous pourriez penser que ces notions ne vous concernent pas. Pourtant, réfléchissez-y : chaque application que vous utilisez, chaque page web que vous consultez, repose sur un système similaire. Mise en cache, configuration, gestion des erreurs : ces concepts sont omniprésents.
Tout comme nous autres humains. Bien souvent, les « symptômes » que nous manifestons, tels que la procrastination, l’anxiété et l’irritabilité, peuvent sembler être de la paresse au premier abord, mais en y regardant de plus près, ils peuvent être dus à des objectifs flous, à une peur de l’échec, et même, plus profondément, à un état d’esprit façonné par des expériences vécues durant l’enfance.
Ce n'est qu'en trouvant la véritable cause profonde que nous pourrons prescrire le bon remède.
Enfin, si vous rencontrez également le problème d'un fichier adminer.php vide, vérifiez-le dans cet ordre :
Commencez par redémarrer PHP-FPM et vider le cache, puis vérifiez la configuration Nginx et enfin consultez le fichier error.log.
Dans la plupart des cas, les deux premières étapes suffisent à résoudre le problème.
Bien sûr, si cela ne fonctionne toujours pas, consultez le fichier error.log.
Elle vous donnera la réponse.
Puisque vous avez lu jusqu'ici, si cela vous a été utile, n'hésitez pas à aimer et à partager. Si vous souhaitez être informé(e) en priorité des nouveautés, vous pouvez aussi me suivre !
Merci d'avoir lu mon article. À bientôt !
J'espère que l'article « Accès à Adminer.php vide ? Le renommage fonctionne-t-il normalement ? Analyse des causes et 3 étapes pour résoudre le problème en profondeur » publié sur le blog de Chen Weiliang ( https://www.chenweiliang.com/ ) vous sera utile.
N'hésitez pas à partager le lien de cet article : https://www.chenweiliang.com/cwl-34403.html
