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

SAVOIRS · SCRIPTES ET PROGRAMMES

WordPress Admin cassé 403 sur load-styles.php / load-scripts.php

Dernière mise à jour 2025-12-10

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

Résumé

Après une mise à jour WordPress ou plugin, certains sites voient soudainement un écran wp-admin cassé :

  • Login fonctionne, mais le tableau de bord d'administration semble non-style, vide, ou demi-chargé.
  • Navigateur DevTools → Affichages réseau 403 Interdit au lieu de:
    • wp-admin/load-styles.php
    • wp-admin/load-scripts.php
  • Désactivation des plugins de wp-admin, ou même renommage wp-content/plugins, fait pas réparer le 403.

Dans de nombreux cas, la cause fondamentale est Pare-feu pour applications Web Wordfence (WAF) toujours en cours de chargement via auto_prepend_file dans .htaccess et/ou .user.ini, même après que le plugin est désactivé.

 

Symptômes

  • WordPress admin charge partiellement ou sans CSS/JS.
  • Dans votre navigateur et vos outils DevTools → onglet réseau :
    • wp-admin/load-styles.php et/ou wp-admin/load-scripts.php montrer 403 Interdit.
  • Le journal des erreurs Apache affiche des lignes similaires à :
    [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 ou désactivation des plugins du tableau de bord pas résoudre l'erreur.

 

Cause racine

Lorsque Wordfence WAF est activé dans Protection étendue mode, ce n'est pas seulement un plugin WordPress normal. Il s'injecte également dans PHP via auto_prepend_file.

Plus précisément, Wordfence :

  1. Ajoute un auto_prepend_file directive pour votre configuration PHP via:
    • .htaccess (Apache)
    • .user.ini (par répertoire PHP paramètres)
  2. Il souligne que la directive relative à un fichier bootstrap, par exemple:
    # 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"
    

Ces forces chaque requête PHP (frontend, wp-admin, AJAX, cron, etc.) à charger wordfence-waf.php avant WordPress. Même si vous désactivez ou supprimez le plugin Wordfence, le bootstrap WAF peut quand même :

  • Bloquer des chemins spécifiques (par exemple load-styles.php, load-scripts.php, wp-cron.php), ou
  • Échec dû à un code obsolète/comparé après une mise à jour WordPress ou PHP.

Parce que cela fonctionne au niveau PHP / Apache, simplement désactiver le plugin dans wp-admin n'est pas suffisant.

 

Comment confirmer It’s Wordfence / auto prepend file

1. Vérifier les journaux d'erreurs Apache / PHP

Regardez dans votre journal d'erreur Apache virtuel ou global pour des lignes comme:

[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 vous voyez 403s sur ces paramètres de base WordPress et le plugin normal désactivant dos’t aide, suspectez WAF / auto prepend file.


2. Contrôle .user.ini dans la racine du document

  1. Via SSH ou gestionnaire de fichiers, allez à votre racine de site (par exemple /home/USER/public_html).
  2. Ouvrir .user.ini et recherchez une ligne similaire à:
    auto_prepend_file = "/home/USER/public_html/wordfence-waf.php"


3. Contrôle .htaccess pour Wordfence WAF

  1. Dans le même répertoire, ouvrir .htaccess.
  2. Rechercher un bloc WAF Wordfence, par exemple :
    # Wordfence WAF
    # <IfModule mod_php7.c>
    php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php
    # </IfModule>

Si ces derniers existent, Wordfence WAF est toujours injecté dans chaque requête PHP, même si le plugin est désactivé.

&nbsp;

Correction: Désaffectation appropriée de Wordfence WAF

Avertissement : Seulement si vous avez l'intention de désactiver Wordfence WAF. Si vous voulez toujours Wordfence, utilisez sa propre interface utilisateur pour reconfigurer la protection étendue.


Step&nbsp;1: Désactiver le plugin Wordfence (si possible)

  1. Connectez-vous à l'admin-wp.
  2. Allez à Greffons &rarr; Greffons installés.
  3. Désactiver Sécurité de Wordfence.

Si wp-admin est complètement cassé, vous pouvez sauter cette étape et aller directement à l'édition des fichiers.

Étape &nbsp;2: Supprimer auto_prepend_file de .user.ini

  1. Dans votre racine de document WordPress, ouvrez .user.ini.
  2. Trouvez la ligne Wordfence :
    auto_prepend_file = "/home/USER/public_html/wordfence-waf.php"
  3. Commenter ou supprimer , par exemple:
    ; auto_prepend_file = "/home/USER/public_html/wordfence-waf.php"
  4. Enregistrez le fichier.

Étape &nbsp;3: Supprimer auto_prepend_file de .htaccess

  1. Dans le même répertoire, ouvrir .htaccess.
  2. Recherchez le bloc WAF Wordfence, par exemple:
    # Wordfence WAF
    <IfModule mod_php7.c>
        php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php
    </IfModule>
  3. Commenter ou supprimer :
    # Wordfence WAF disabled
    # <IfModule mod_php7.c>
    #     php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php
    # </IfModule>
  4. Enregistrez le fichier.

Step&nbsp;4: Effacer le cache opcode / redémarrer PHP (optionnel mais recommandé)

  • Si vous utilisez PHP-FPM / LSAPI / FastCGI, redémarrez PHP-FPM ou LiteSpeed / Apache.
  • Demandez également à votre fournisseur d'hébergement de supprimer l'opcache PHP pour ce compte.

Step 5: Test wp-admin

  1. Ouvrir /wp-admin/ dans votre navigateur.
  2. Ouvrez le réseau DevTools &rarr;, puis rechargez la page.
  3. Vérifier :
    • wp-admin/load-styles.php retours 200 OK.
    • wp-admin/load-scripts.php retours 200 OK.
    • L'interface d'administration est de nouveau normale (CSS/JS chargé).

Si vous avez précédemment ajouté des redéfinitions temporaires (par exemple, wp-admin/.htaccess que inconditionnellement permis ces fichiers), vous pouvez les supprimer une fois que tout fonctionne normalement.

&nbsp;

Optionnel: Nettoyer les fichiers Wordfence

Si vous avez complètement fini avec Wordfence, vous pouvez également:

  • Supprimer ou renommer :
    • wp-content/plugins/wordfence/
    • wp-content/wflogs/ (annuaire de l'historique)
  • Supprimer wordfence-waf.php de votre document root s'il n'est plus référencé nulle part.

Prévenir les problèmes futurs

  • Soyez conscient que les plugins de sécurité avec WAF / &ldquo;Protection étendue&rdquo; peuvent modifier:
    • .htaccess
    • .user.ini
    • Comportement PHP global via auto_prepend_file
  • Désactiver le plugin du tableau de bord ne pas enlever automatiquement ces crochets de bas niveau.
  • Si vous voyez étrange 403s ou &ldquo;client nié par configuration du serveur&rdquo; sur les fichiers WordPress de base comme load-styles.php, load-scripts.phpou wp-cron.php, toujours vérifier pour:
    • auto_prepend_file lignes en .user.ini et .htaccess.
    • Fichiers de bootstrap WAF restants tels que wordfence-waf.php.

Résumé

Numéro: admin WordPress cassé, load-styles.php / load-scripts.php retour 403, même après avoir désactivé les plugins.

Cause: Wordfence WAF encore injecté via auto_prepend_file dans .htaccess / .user.ini, chargement wordfence-waf.php sur chaque demande et bloquer ces paramètres.

Correction :

  1. Désactiver le plugin Wordfence (si possible).
  2. Supprimer auto_prepend_file références à wordfence-waf.php de .htaccess et .user.ini.
  3. Rechargez PHP / Apache et retestez wp-admin &mdash; les 403s sur load-styles.php / load-scripts.php devrait disparaître.

← Tous les articles de la base de connaissances

Dites-nous ce qui doit rester debout.

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