ALL SYSTEMS OPERATIONALUPTIME 99.97%FLEET 18/18IN-MUM · US-LAX · EU-FSN EST. 2003 · +91 11 4998 4038

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.
  • 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.


Step 1: Disable Wordfence plugin (if possible)

  1. Entra a wp-admin.
  2. Ve a PluginsPlugins 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.

Step 2: Remove 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.

Step 3: Remove 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.

Step 4: Clear opcode cache / restart PHP (optional but recommended)

  • 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.

Step 5: Test 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

  • Tenga en cuenta que los plugins de seguridad con WAF / &ldquo;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 &ldquo;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 &mdash; 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.

A short conversation with an engineer. No quote-bot, no callback queue. We'll tell you honestly if we're not the right fit.