CONOCIMIENTOS · PROGRAMAS DEL SCRIPT

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.
  • Navegador DevTools &rar; Red muestra 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.

nbsp;

Síntomas

  • WordPress admin carga parcialmente o sin CSS/JS.
  • En su navegador bordesquo;s DevTools &rar; pestaña de red:
    • 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.

nbsp;

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.

nbsp;

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.

nbsp;

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 " Consejera " 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. Abrir DevTools &rar; Red, luego recargar la página.
  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.

nbsp;

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

  • Tenga en cuenta que los plugins de seguridad con WAF / “Protección avanzada limitadardquo; puede modificar:
    • .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.
  • Si usted ve extraños 403 o “client negado por configuración del servidor implicardquo; en archivos de WordPress núcleo como 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

Díganos qué tiene que estar levantado.

Una breve conversación con un ingeniero. Sin cita-bot, sin cola de callback.