Directori d'articles
Ahir a la tarda, estava configurant l'eina de gestió de bases de dades Adminer al servidor. L'Adminer és lleuger i fàcil d'utilitzar; un únic fitxer PHP fa la feina, a diferència de phpMyAdmin , que requereix un munt de dependències. Vaig descarregar la darrera versió del lloc web oficial, la vaig pujar al servidor, vaig configurar els permisos i vaig obrir el navegador, a punt per comprovar-ho.
Aleshores, tot va quedar en blanc.

Vaig actualitzar la pàgina tres vegades, em feien mal els dits de prémer F5 tantes vegades. Encara res. Vaig obrir les eines de desenvolupament del navegador; mostrava un error 200 OK, però el cos de la resposta estava buit. Vaig quedar completament parat. Què estava passant?
Ho vaig pensar un moment. Podria ser un problema de permisos de fitxer? Ho vaig comprovar i era 755. Podria ser una incompatibilitat de la versió de PHP? Ho vaig comprovar i és PHP 8.2, cosa que està bé. Podria ser que el fitxer en si fos defectuós? He descarregat una còpia nova, l'he sobreescrit i encara està en blanc.
Per alguna raó inexplicable, vaig pensar, per què no intentar canviar-me el nom?
He rebatejat adminer.php a adminer1.php i he actualitzat la pàgina.
L'accés s'ha dut a terme correctament.
Estava realment desconcertat. El mateix fitxer, el mateix codi, el mateix servidor, i és accessible només canviant el nom? Quina mena de lògica mística és aquesta?
El problema d'un fitxer adminer.php en blanc
Més tard em vaig adonar que no era cap mena de superstició; era l'emmagatzematge en memòria cau de PHP el que causava el problema.
OPcache, abreviatura d'Opcode Cache, és una extensió d'optimització del rendiment per a PHP. El seu principi és simple: PHP és un llenguatge interpretat i cada sol·licitud requereix que el codi PHP es compili en opcode abans de l'execució. OPcache emmagatzema el resultat compilat a la memòria cau, permetent que les sol·licituds posteriors utilitzin la versió emmagatzemada a la memòria cau directament sense recompilació, cosa que resulta en una millora significativa del rendiment.
Però aquí rau el problema.
Anteriorment, adminer.php mostrava "Fitxer no trobat" (havia carregat el fitxer incorrecte) i OPcache havia emmagatzemat a la memòria cau el resultat compilat d'aquest contingut incorrecte. Més tard, vaig substituir adminer.php pel codi correcte, però OPcache el va ignorar i va continuar llegint la memòria cau antiga de la memòria, donant lloc a una pàgina en blanc o al missatge d'error antic.
Quan el canvieu de nom a adminer1.php, es converteix en una ruta de fitxer completament nova per a OPcache, i es tornarà a carregar i el resoldrà correctament.
És com si ja haguessis comprat un llibre nou, però la fitxa de la biblioteca encara té la signatura topogràfica del llibre antic. Quan el busques a la prestatgeria, és clar que està buida. Però si canvies el títol del llibre, la biblioteca et crearà una fitxa nova i llavors el podràs trobar.
Motiu 1: la memòria cau d'OPcache provoca espais en blanc
Com fer-hi front?
Reinicieu el servei PHP-FPM i esborreu la memòria cau d'OPcache.
# 查看正在运行的PHP版本
php -v
# 重启对应的PHP-FPM(例如PHP 8.5)
sudo systemctl restart php8.5-fpm
# 或者重启所有PHP-FPM服务
sudo systemctl restart php*-fpmDesprés de reiniciar, canvieu el nom del fitxer a adminer.php, actualitzeu la pàgina web (es recomana prémer Ctrl+F5 per forçar una actualització del navegador) i el problema s'hauria de resoldre.
Però la història encara no s'ha acabat.
Després de reiniciar PHP-FPM, vaig tornar a modificar el fitxer adminer.php, vaig actualitzar la pàgina, però encara estava en blanc. Estava completament desconcertat.
Motiu 2: Restriccions de les regles de configuració de Nginx
Això porta a la segona possible raó.
El fitxer de configuració de Nginx pot tenir regles especials que restringeixen adminer.php.
Prèviament vaig configurar Fail2Ban al panell HestiaCP i vaig escriure una regla de coincidència exacta per a adminer.php per evitar atacs de força bruta. La regla va codificar el nom del fitxer adminer.php, de manera que un cop el vau canviar de nom a adminer1.php, vau ometre aquesta regla de Nginx i hi podíeu accedir normalment.
El mètode de resolució de problemes és senzill: busqueu entrades codificades a la configuració de Nginx.
sudo grep -rn "adminer.php" /etc/nginx/Si trobeu regles com `location = /adminer.php { … }`, vol dir que Nginx està gestionant aquest nom de fitxer específic de manera especial. Només cal que l'elimineu o el modifiqueu.
Motiu 3: Configuració de visualització d'errors de PHP
La tercera raó és més subtil.
L'script PHP s'intercepta o genera un error, però la pàgina desactiva la visualització d'errors (display_errors = Off). En un entorn de producció, PHP oculta els errors per defecte, mostrant una pàgina en blanc. Si el fitxer d'entrada (per exemple, index.php) falla per alguna raó en intentar incloure "./adminer.php", la pàgina simplement quedarà en blanc.
En aquesta situació, comprovar el registre d'errors és el mètode més 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.logEl registre us indicarà el veritable motiu de la pantalla blanca.
Si he de ser sincer, finalment vaig trobar el problema consultant l'error.log. Va resultar que adminer.php estava cridant una extensió PHP inexistent i display_errors estava desactivat, de manera que la pàgina estava en blanc, però el registre d'errors ho registrava clarament.
Solucions i passos per resoldre problemes
Aquest incident m'ha deixat una profunda impressió.
Els problemes tècnics sovint no són tan senzills com semblen a primera vista. Un fitxer adminer.php en blanc pot semblar un problema de fitxer a primera vista, però aprofundir-hi podria revelar un problema de memòria cau, més endavant podria ser un problema de configuració i, encara més endavant, podria ser un problema amb el codi en si.
Si no ets programador, potser penses que aquestes coses són irrellevants per a tu. Però pensa-hi: cada aplicació que fas servir, cada pàgina web que visites, té un sistema similar que s'executa entre bastidors. Emmagatzematge en memòria cau, configuració, gestió d'errors: aquests conceptes són a tot arreu.
Igual que nosaltres, els humans. Moltes vegades, els "símptomes" que mostrem, com ara la procrastinació, l'ansietat i la irritabilitat, poden semblar mandra a la superfície, però si aprofundim, poden ser deguts a objectius poc clars, a una investigació més profunda, a la por al fracàs i, encara més profundament, a una mentalitat modelada per les experiències de la infància.
Només si trobem la veritable causa arrel podem receptar el medicament adequat.
Finalment, si també us trobeu amb el problema d'un fitxer adminer.php en blanc, comproveu-ho en aquest ordre:
Primer, reinicieu PHP-FPM i esborreu la memòria cau, després comproveu la configuració de Nginx i finalment comproveu el fitxer error.log.
En la majoria dels casos, els dos primers passos són suficients per resoldre el problema.
Per descomptat, si això encara no funciona, reviseu l'error.log.
Et dirà la resposta.
Ja que has llegit fins aquí, si t'ha semblat útil, fes-hi un "m'agrada" i comparteix-ho. Si vols rebre actualitzacions primer, també em pots seguir!
Gràcies per llegir el meu article. Fins la propera.
Esperem que l'article "Accés a Adminer.php en blanc? El canvi de nom funciona normalment? Anàlisi dels motius i 3 passos per resoldre el problema a fons" compartit al blog de Chen Weiliang ( https://www.chenweiliang.com/ ) us sigui útil.
No dubteu a compartir l'enllaç d'aquest article: https://www.chenweiliang.com/cwl-34403.html
