Directorio de artículos
Ayer por la tarde, estuve configurando la herramienta de gestión de bases de datos Adminer en el servidor. Adminer es ligero y fácil de usar; un solo archivo PHP es suficiente, a diferencia de phpMyAdmin , que requiere varias dependencias. Descargué la última versión del sitio web oficial, la subí al servidor, configuré los permisos y abrí el navegador, listo para probarla.
Entonces, todo se quedó en blanco.

Actualicé la página tres veces, con los dedos doloridos de tanto pulsar F5. Seguía sin pasar nada. Abrí las herramientas para desarrolladores del navegador; mostraba un error 200 OK, pero el cuerpo de la respuesta estaba vacío. Estaba completamente atónito. ¿Qué estaba pasando?
Lo pensé un momento. ¿Podría ser un problema de permisos de archivo? Lo comprobé y eran 755. ¿Podría ser una incompatibilidad de versión de PHP? Lo comprobé y es PHP 8.2, lo cual está bien. ¿Podría estar defectuoso el archivo en sí? Descargué una copia nueva, la sobrescribí y sigue en blanco.
Por alguna razón inexplicable, pensé, ¿por qué no intentar cambiarme el nombre?
Renombré adminer.php a adminer1.php y actualicé la página.
El acceso fue exitoso.
Me quedé totalmente perplejo. ¿El mismo archivo, el mismo código, el mismo servidor, y se puede acceder a él simplemente cambiando el nombre? ¿Qué clase de lógica mística es esta?
El problema de un archivo adminer.php vacío
Más tarde me di cuenta de que no se trataba de ningún tipo de superstición; el problema radicaba en el almacenamiento en caché de PHP.
OPcache, abreviatura de Opcode Cache, es una extensión de optimización del rendimiento para PHP. Su principio es sencillo: PHP es un lenguaje interpretado, y cada solicitud requiere que el código PHP se compile en código de operación antes de su ejecución. OPcache almacena en caché el resultado compilado en memoria, lo que permite que las solicitudes posteriores utilicen directamente la versión almacenada en caché sin necesidad de recompilación, lo que se traduce en una mejora significativa del rendimiento.
Pero ahí radica el problema.
Anteriormente, adminer.php mostraba el mensaje "Archivo no encontrado" (había subido el archivo incorrecto), y OPcache había almacenado en caché el resultado compilado de ese contenido erróneo. Posteriormente, reemplacé adminer.php con el código correcto, pero OPcache lo ignoró y continuó leyendo la caché antigua desde la memoria, lo que resultaba en una página en blanco o el antiguo mensaje de error.
Al cambiarle el nombre a adminer1.php, se convierte en una ruta de archivo completamente nueva para OPcache, y este la recargará y resolverá correctamente.
Es como si ya hubieras conseguido un libro nuevo, pero la ficha de la biblioteca aún tuviera el número de clasificación del libro anterior. Cuando vas a buscarlo en la estantería, claro, está vacía. Pero si cambias el título del libro, la biblioteca creará una nueva ficha y entonces podrás encontrarlo.
Razón 1: La caché OPcache provoca espacios en blanco
¿Como lidiar con?
Reinicie el servicio PHP-FPM y borre la caché de OPcache.
# 查看正在运行的PHP版本
php -v
# 重启对应的PHP-FPM(例如PHP 8.5)
sudo systemctl restart php8.5-fpm
# 或者重启所有PHP-FPM服务
sudo systemctl restart php*-fpmTras reiniciar, cambie el nombre del archivo a adminer.php, actualice la página web (se recomienda pulsar Ctrl+F5 para forzar la actualización del navegador) y el problema debería estar resuelto.
Pero la historia aún no ha terminado.
Tras reiniciar PHP-FPM, volví a modificar el archivo adminer.php, actualicé la página, pero seguía en blanco. Estaba completamente desconcertado.
Motivo 2: Restricciones en las reglas de configuración de Nginx
Esto nos lleva a la segunda posible razón.
El archivo de configuración de Nginx puede contener reglas especiales que restrinjan el acceso a adminer.php.
Previamente configuré Fail2Ban en el panel HestiaCP y escribí una regla de coincidencia exacta para adminer.php para prevenir ataques de fuerza bruta. La regla tenía codificado el nombre del archivo adminer.php, por lo que una vez que lo renombrabas a adminer1.php, se eludía esta regla de Nginx y se podía acceder a él normalmente.
El método de solución de problemas es sencillo: busque entradas codificadas en la configuración de Nginx.
sudo grep -rn "adminer.php" /etc/nginx/Si encuentras reglas como `location = /adminer.php { … }`, significa que Nginx está manejando este nombre de archivo específico de forma especial. Simplemente elimínalo o modifícalo.
Motivo 3: Error de PHP en la configuración de visualización
La tercera razón es más sutil.
El script PHP se intercepta o genera un error, pero la página desactiva la visualización de errores (display_errors = Off). En un entorno de producción, PHP oculta los errores por defecto, mostrando una página en blanco. Si el archivo de entrada (por ejemplo, index.php) falla por algún motivo al intentar incluir "./adminer.php", la página simplemente quedará en blanco.
En esta situación, consultar el registro de errores es el método 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 registro te indicará la verdadera razón de la pantalla en blanco.
Sinceramente, finalmente encontré el problema revisando el archivo error.log. Resultó que adminer.php estaba llamando a una extensión de PHP inexistente y display_errors estaba desactivado, por lo que la página aparecía en blanco, pero el registro de errores lo dejó constancia claramente.
Soluciones y pasos para la resolución de problemas
Este incidente me ha dejado una profunda huella.
Los problemas técnicos a menudo no son tan simples como parecen a simple vista. Un archivo adminer.php vacío puede parecer un problema de archivo a primera vista, pero si se investiga más a fondo, podría revelarse un problema de caché; más adelante, podría ser un problema de configuración; y aún más adelante, podría ser un problema con el código en sí.
Si no eres programador, quizás pienses que estos temas no te conciernen. Pero piénsalo: cada aplicación que usas, cada página web que visitas, tiene un sistema similar funcionando en segundo plano. Almacenamiento en caché, configuración, manejo de errores: estos conceptos están presentes en todas partes.
Igual que nosotros, los humanos. Muchas veces, los "síntomas" que manifestamos, como la procrastinación, la ansiedad y la irritabilidad, pueden parecer pereza a simple vista, pero si profundizamos, pueden deberse a objetivos poco claros, a un miedo al fracaso e incluso, en el fondo, a una mentalidad moldeada por experiencias de la infancia.
Solo encontrando la verdadera causa raíz podremos recetar el medicamento adecuado.
Finalmente, si también te encuentras con el problema de un archivo adminer.php vacío, revísalo en este orden:
Primero, reinicie PHP-FPM y borre la caché, luego verifique la configuración de Nginx y, finalmente, revise el archivo error.log.
En la mayoría de los casos, los dos primeros pasos son suficientes para resolver el problema.
Por supuesto, si eso sigue sin funcionar, entonces revise el archivo error.log.
Te dará la respuesta.
Ya que has leído hasta aquí, si te ha resultado útil, dale a "Me gusta" y compártelo. Si quieres ser el primero en recibir las novedades, ¡también puedes seguirme!
Gracias por leer mi artículo. ¡Hasta la próxima!
Esperamos que el artículo "Adminer.php Access Blank? Renamed Works Normally? Analysis of Reasons and 3 Steps to Completely Solve the Problem" compartido en el blog de Chen Weiliang ( https://www.chenweiliang.com/ ) le sea útil.
No dudes en compartir el enlace de este artículo: https://www.chenweiliang.com/cwl-34403.html
