Base de conocimientos · Programas de scripts

WordPress Admin roto 403 en estilos de carga.php / cargador-scripts.php

Última actualización 2025-12-10

WordPress wp-admin 403 en load-styles.php / load-scripts.php (Wordfence WAF / auto prepend file)

Resumen

Después de una actualización de WordPress o plugin, algunos sitios de repente ver una pantalla wp-admin rota:

  • Trabajos de inicio de sesión, pero el panel de administración parece sin estilo, en blanco o medio cargado.
  • Browser DevTools → Network shows 403 Prohibido para:
    • wp-admin/load-styles.php
    • wp-admin/load-scripts.php
  • Desactivar plugins de wp-admin, o incluso renombrar wp-content/plugins, sí no Arregla el 403.

En muchos casos, la causa raíz es Wordfence Web Application Firewall (WAF) todavía siendo cargado a través de auto_prepend_file en .htaccess y/o .user.ini, incluso después de que el plugin esté deshabilitado.

 

Síntomas

  • WordPress admin carga parcialmente o sin CSS/JS.
  • In your browser’s DevTools → Network tab:
    • wp-admin/load-styles.php y/o wp-admin/load-scripts.php show 403 Prohibido.
  • El registro de errores de Apache muestra líneas similares a:
    [authz_core:error] AH01630: client denied by server configuration: /home/USER/public_html/wp-admin/load-styles.php
    [authz_core:error] AH01630: client denied by server configuration: /home/USER/public_html/wp-admin/load-scripts.php
  • Renaming wp-content/plugins o desactivar plugins del panel de control hace no resolver el error.

 

Causa de la raíz

Cuando Wordfence WAF está habilitado en Protección ampliada modo, no es sólo un plugin de WordPress normal. También se inyecta en PHP a través de auto_prepend_file.

Específicamente, Wordfence:

  1. Añada un auto_prepend_file directiva a su configuración de PHP a través de:
    • .htaccess (Apache)
    • .user.ini (Configuración PHP por directorio)
  2. Puntos que la directiva a un archivo de arranque como:
    # In .htaccess
    php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php
    
    ; In .user.ini
    auto_prepend_file = "/home/USER/public_html/wordfence-waf.php"
    

Esta fuerza cada solicitud de PHP (frontend, wp-admin, AJAX, cron, etc.) para cargar wordfence-waf.php antes WordPress. Incluso si usted deshabilita o elimina el plugin de Wordfence, el bootstrap de WAF todavía puede:

  • Bloquear caminos específicos (por ejemplo. load-styles.php, load-scripts.php, wp-cron.php), o
  • Fail debido a códigos obsoletos/mermados después de una actualización de WordPress o PHP.

Porque esto se ejecuta en el nivel PHP / Apache, simplemente desactivar el plugin en wp-admin no es suficiente.

 

Cómo confirmarlo?

1. Chequee los registros de errores de Apache / PHP

Busque en su host virtual o registro de errores de Apache global para líneas como:

[authz_core:error] AH01630: client denied by server configuration: /home/USER/public_html/wp-admin/load-styles.php
[authz_core:error] AH01630: client denied by server configuration: /home/USER/public_html/wp-admin/load-scripts.php

Si usted ve 403s en estos puntos finales de WordPress núcleo y el desactivación de plugin normal hace sentirlos;t help, suspect WAF / auto prepend file.


2. Check .user.ini en la raíz del documento

  1. Via SSH o gestor de archivos, vaya a su raíz del sitio (por ejemplo /home/USER/public_html).
  2. Abierto .user.ini y buscar una línea similar a:
    auto_prepend_file = "/home/USER/public_html/wordfence-waf.php"


3. Check .htaccess para Wordfence WAF

  1. En el mismo directorio, abierto .htaccess.
  2. Busque un bloque de Wordfence WAF, por ejemplo:
    # Wordfence WAF
    # <IfModule mod_php7.c>
    php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php
    # </IfModule>

Si existen, Wordfence WAF sigue siendo inyectado en cada solicitud PHP, incluso si el plugin está desactivado.

 

Corrección: Properly Decommission Wordfence WAF

Advertencia: Sólo haz esto si tienes la intención de deshabilitar Wordfence WAF. Si todavía quieres Wordfence, utiliza su propia UI para reconfigurar Protección Extendida.


Paso limitadobsp;1: Desactivar plugin de Wordfence (si es posible)

  1. Entra a wp-admin.
  2. Ve a Plugins → Plugins instalados.
  3. Desactivar Seguridad de Wordfence.

Si wp-admin está completamente roto, puede saltar este paso y ir directamente a los archivos de edición.

Paso de la acción;2: Retirar auto_prepend_file de .user.ini

  1. En su raíz de documento de WordPress, abierto .user.ini.
  2. Encuentra la línea Wordfence:
    auto_prepend_file = "/home/USER/public_html/wordfence-waf.php"
  3. Comentarlo o eliminarlo , por ejemplo:
    ; auto_prepend_file = "/home/USER/public_html/wordfence-waf.php"
  4. Guarda el archivo.

Paso de la acción;3: Retirar auto_prepend_file de .htaccess

  1. En el mismo directorio, abierto .htaccess.
  2. Busque el bloque de Wordfence WAF, por ejemplo:
    # Wordfence WAF
    <IfModule mod_php7.c>
        php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php
    </IfModule>
  3. Comentar o eliminarlo:
    # Wordfence WAF disabled
    # <IfModule mod_php7.c>
    #     php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php
    # </IfModule>
  4. Guarda el archivo.

Paso limitadobsp;4: Cáqueo de código de operaciones claro / reiniciar PHP (opcional pero recomendado)

  • Si usted está usando PHP-FPM / LSAPI / FastCGI, reinicia PHP-FPM o LiteSpeed / Apache.
  • Alternativamente, pida a su proveedor de alojamiento que despeje la opcache PHP para esa cuenta.

Paso de la prueba wp-admin

  1. Abierto /wp-admin/ en su navegador.
  2. Open DevTools → Network, then reload the page.
  3. Verificar:
    • wp-admin/load-styles.php de retornos 200.
    • wp-admin/load-scripts.php de retornos 200.
    • La interfaz de administración se ve normal de nuevo (CSS/JS cargado).

Si usted añadiera previamente cualquier anulación temporal (por ejemplo, a wp-admin/.htaccess que permitieron incondicionalmente esos archivos), puede eliminarlos una vez que todo funciona normalmente.

 

Opcional: Limpiar archivos de Wordfence

Si usted está completamente hecho con Wordfence, también puede:

  • Eliminar o renombrar:
    • wp-content/plugins/wordfence/
    • wp-content/wflogs/ (Directorio de registro)
  • Retirar wordfence-waf.php desde la raíz de su documento si ya no se hace referencia en ningún lugar.

Prevención de futuras cuestiones

  • Be aware that security plugins with WAF / “Extended Protection” can modify:
    • .htaccess
    • .user.ini
    • Comportamiento global de PHP auto_prepend_file
  • Desactivar el plugin del panel de control no automáticamente eliminar estos ganchos de bajo nivel.
  • If you see strange 403s or “client denied by server configuration” on core WordPress files like load-styles.php, load-scripts.php, o wp-cron.php, siempre busque:
    • auto_prepend_file líneas en .user.ini y .htaccess.
    • Archivo de arranque de WAF de sobra como wordfence-waf.php.

Resumen

Cuestión: WordPress administración roto, load-styles.php / load-scripts.php volver 403, incluso después de desactivar plugins.

Causa: Wordfence WAF todavía inyectado a través de auto_prepend_file en .htaccess / .user.ini, carga wordfence-waf.php en cada solicitud y bloqueo de esos puntos finales.

Arregla:

  1. Incremento de Wordfence deshabilitado (si es posible).
  2. Retirar auto_prepend_file referencias a wordfence-waf.php de .htaccess y .user.ini.
  3. Recarga PHP / Apache y retest wp-admin — los 403 en load-styles.php / load-scripts.php Debería desaparecer.

← Todos los artículos de base de conocimientos

Dinos lo que necesitas

Compare los planes disponibles o describa su carga de trabajo para que podamos discutir un punto de partida adecuado.