Le WordPress d'aujourd'hui, décodé pour les développeurs

Erreurs WordPress · Mises à jour et installation

Mise à jour échouée : « L’archive n’a pas pu être installée »

Mise à jour

« La mise à jour a échoué » ou « L’archive n’a pas pu être installée » : lisez le motif exact, corrigez droits, disque ou réseau, ou mettez à jour par WP-CLI.

Message affiché

La mise à jour a échoué : %s

En anglais : Update failed: %s

Réponse rapide

La mise à jour d’une extension, d’un thème ou du cœur s’est arrêtée, et le motif suit « La mise à jour a échoué : ». Vérifiez l’espace disque, les droits d’écriture de wp-content et l’accès sortant, puis relancez.

Vous cliquez sur « Mettre à jour maintenant » et, au lieu de la confirmation attendue, une ligne rouge apparaît : « La mise à jour a échoué : … », suivie d’un motif qui change selon la situation. Il peut s’agir de « L’archive n’a pas pu être installée. », de « Impossible de créer le dossier. », de « Le téléchargement a échoué. » ou d’une autre phrase. Sur l’écran de mise à jour du cœur, le message est plutôt « Échec de l’installation ». L’erreur est visible dans l’administration (extensions, thèmes, tableau de bord des mises à jour) ou dans le terminal avec WP-CLI.

Elle ne dit pas ce qui ne va pas : c’est le motif qui suit qui compte. Cette fiche vous apprend à le lire, à identifier la cause réelle (disque, droits, réseau, archive corrompue) et à terminer la mise à jour proprement, y compris sans passer par l’administration.

Ce que signifie cette erreur

Les mises à jour passent par la classe WP_Upgrader (wp-admin/includes/class-wp-upgrader.php) et ses dérivées Plugin_Upgrader, Theme_Upgrader et Core_Upgrader. La séquence est toujours la même : se connecter au système de fichiers, télécharger l’archive ZIP dans un dossier temporaire, la décompresser dans wp-content/upgrade/, activer le mode maintenance, remplacer les fichiers, puis nettoyer. Avant de remplacer une extension ou un thème, WordPress déplace l’ancienne version dans wp-content/upgrade-temp-backup/ afin de pouvoir la restaurer si l’étape suivante échoue.

Chaque étape peut renvoyer une erreur dont le texte est défini dans generic_strings(). Dans l’interface, le script wp-admin/js/updates.js préfixe ce texte par « La mise à jour a échoué : », ou affiche « Échec de mise à jour. » sur le bouton de la carte d’une extension. Les motifs les plus courants sont :

Motif affichéÉtape concernéeCause habituelle
Le téléchargement a échoué.Téléchargement de l’archivePas d’accès sortant vers wordpress.org, délai dépassé, pare-feu (voir la fiche cURL error 28)
Impossible de créer le dossier.Décompression ou copieDroits d’écriture ou propriétaire des fichiers (voir la fiche dédiée)
L’archive n’a pas pu être installée.DécompressionArchive corrompue ou vide, extension ZIP défaillante, disque plein
Le dossier de destination existe déjà.Installation d’une nouvelle extension ou d’un nouveau thèmeUn dossier du même nom existe déjà dans wp-content
La mise à jour ne peut pas être installée car certains fichiers n’ont pas pu être copiés…Copie des fichiersDroits incohérents sur certains fichiers
Impossible de supprimer l’ancienne extension.Remplacement de l’extensionFichiers verrouillés ou non supprimables
Impossible de copier les fichiers. Il se pourrait que vous manquiez de place.Copie (cœur)Disque ou quota saturé
Une autre mise à jour est actuellement en cours.Verrou du cœurVoir la fiche sur ce verrou

Diagnostic rapide

Symptôme / constatCause probableÀ vérifier
Le motif cite le téléchargement ou un délaiRéseau sortant bloqué ou lentSanté du site, curl -I https://api.wordpress.org/ depuis le serveur
Le motif cite un dossier ou des fichiers non copiésDroits ou propriétaire incorrectsls -ld wp-content wp-content/upgrade, utilisateur PHP
Le motif cite l’archive, ou la mise à jour s’arrête sans messageDisque plein, mémoire ou temps d’exécution dépassésdf -h, df -i, journal d’erreurs PHP
Le site reste en maintenance après l’échecFichier .maintenance resté en placeRacine du site, fiche maintenance bloquée
Une seule extension échoue, les autres passentArchive ou version incompatible de cette extensionMise à jour manuelle, éditeur de l’extension

Les causes les plus fréquentes

  1. Des droits d’écriture ou un propriétaire de fichiers incorrects sur wp-content : l’utilisateur de PHP ne peut pas créer ou remplacer les dossiers.
  2. Un disque ou un quota saturé, ou un manque d’inodes, ce qui interrompt la décompression ou la copie.
  3. Un accès sortant bloqué ou lent : pare-feu, résolution DNS défaillante, proxy mal configuré.
  4. Une limite de mémoire ou de temps d’exécution PHP atteinte sur un hébergement mutualisé, surtout pour les mises à jour en masse.
  5. Un dossier wp-content/upgrade dans un état incohérent après une mise à jour précédente interrompue.
  6. Une extension ou un thème dont l’archive est corrompue, ou dont la mise à jour est incompatible avec la version de PHP ou de WordPress.

Solutions pas à pas

1. Lire le motif et relancer la mise à jour

Notez le texte exact après « La mise à jour a échoué : ». Rechargez la page des mises à jour (Ctrl+F5), puis relancez une seule mise à jour à la fois. Un échec ponctuel de téléchargement, ou une mise à jour interrompue par un onglet fermé, se règle souvent ainsi. Évitez de lancer plusieurs mises à jour en parallèle : si le site affiche un message de maintenance, consultez la fiche maintenance bloquée ; si WordPress annonce « Une autre mise à jour est actuellement en cours », voyez la fiche autre mise à jour en cours.

2. Vérifier l’espace disque

Depuis SSH ou le gestionnaire de fichiers de l’hébergeur :

df -h /home/monsite
df -i /home/monsite      # inodes : un disque peut être plein de petits fichiers
du -sh wp-content/* | sort -h | tail

Supprimez les sauvegardes anciennes, les journaux volumineux et les caches. Notre article sur le disque plein sur un serveur WordPress détaille la recherche des gros consommateurs. Prévoyez une marge équivalente à plusieurs fois la taille de l’extension à mettre à jour.

3. Contrôler les droits et le propriétaire des fichiers

Si le motif mentionne un dossier ou des fichiers qui n’ont pas pu être créés ou copiés, la cause est presque toujours là. Comparez le propriétaire des dossiers à l’utilisateur qui exécute PHP :

ps -eo user,comm | grep -E "php-fpm|apache2|httpd" | sort -u
stat -c '%U:%G %a %n' wp-content wp-content/plugins wp-content/themes wp-content/upgrade

La fiche « Impossible de créer le dossier » détaille la correction (propriétaire, FS_METHOD, FTP) et l’article Permissions de fichiers WordPress donne les valeurs recommandées. Si WordPress vous demande des identifiants FTP, c’est qu’il n’arrive pas à écrire directement dans les dossiers : la même fiche explique pourquoi.

4. Nettoyer le dossier upgrade et le mode maintenance

Après un échec, vérifiez qu’aucun résidu ne gêne. Sauvegardez le site d’abord. Aucune mise à jour ne doit être en cours :

ls -la .maintenance 2>/dev/null     # à la racine du site
ls -la wp-content/upgrade wp-content/upgrade-temp-backup
rm -rf wp-content/upgrade/*

Le dossier wp-content/upgrade est vidé automatiquement par WordPress avant chaque décompression (unpack_package()) : le nettoyer à la main ne risque rien tant qu’aucune mise à jour ne tourne. Ne touchez à upgrade-temp-backup que si vous savez que la version précédente n’est plus nécessaire. Si un fichier .maintenance subsiste, supprimez-le.

5. Vérifier l’accès sortant

Si le motif parle du téléchargement, testez la connexion depuis le serveur :

curl -sS -o /dev/null -w "%{http_code} %{time_total}s\n" https://api.wordpress.org/core/version-check/1.7/
wp eval 'var_dump( wp_remote_retrieve_response_code( wp_remote_get( "https://downloads.wordpress.org" ) ) );'

Un code différent de 200 ou un délai dépassé pointe vers un pare-feu ou un DNS : voyez la fiche cURL error 28. L’écran Outils > Santé du site signale aussi les problèmes d’accès sortant et de système de fichiers.

6. Mettre à jour en ligne de commande ou manuellement

Quand l’interface échoue, WP-CLI donne le détail de l’erreur et contourne la limite de temps du navigateur :

wp plugin update nom-de-l-extension
wp plugin update --all
wp theme update --all
wp core update
wp core verify-checksums

Pour une extension dont l’archive pose problème, forcez la réinstallation de la version voulue avec wp plugin install nom-de-l-extension --force. En dernier recours, téléchargez l’archive, décompressez-la, puis remplacez le dossier de l’extension par SFTP : vos réglages, stockés en base de données, ne sont pas touchés. Cette méthode permet aussi de contourner un hébergement qui coupe les longues requêtes.

7. Restaurer une version qui fonctionne

Si le site est cassé après l’échec, restaurez la sauvegarde la plus récente, ou remettez l’ancien dossier de l’extension depuis wp-content/upgrade-temp-backup/plugins/ quand il s’y trouve encore. Un site qui affiche une page d’erreur critique après la mise à jour se traite en désactivant l’extension concernée. Prévoyez ce retour arrière avant d’en avoir besoin, avec un plan de sauvegarde et de reprise testé.

Prévenir l’erreur

  • Faites une sauvegarde complète avant toute mise à jour importante, et testez-la.
  • Surveillez l’espace disque et les inodes, et purgez les anciennes sauvegardes automatiquement.
  • Alignez le propriétaire des fichiers sur l’utilisateur de PHP, ou fixez FS_METHOD en connaissance de cause.
  • Mettez à jour les extensions une par une plutôt qu’en masse sur un hébergement mutualisé, et testez d’abord sur une préproduction.
  • Décidez en connaissance de cause de ce que vous laissez se mettre à jour automatiquement, et à quel moment.

FAQ

Que veut dire « L’archive n’a pas pu être installée » ?

WordPress n’a pas réussi à décompresser ou à exploiter le fichier ZIP téléchargé. Les causes habituelles sont un disque plein, un téléchargement incomplet, une archive corrompue ou des droits d’écriture insuffisants sur wp-content/upgrade.

Mon site est resté en maintenance après l’échec, que faire ?

Supprimez le fichier .maintenance situé à la racine du site, puis relancez la mise à jour. La fiche sur la maintenance bloquée détaille les cas particuliers.

Puis-je perdre mes réglages si la mise à jour échoue ?

Non : les réglages d’une extension sont enregistrés en base de données, pas dans ses fichiers. Seul le code est remplacé. Une sauvegarde reste la seule vraie garantie, notamment pour les fichiers personnalisés dans le dossier d’une extension.

Pourquoi l’interface échoue alors que WP-CLI réussit ?

L’interface dépend de la limite de temps du navigateur et du serveur web, et de l’utilisateur du serveur web pour écrire les fichiers. WP-CLI s’exécute sous le compte de l’utilisateur en ligne de commande, avec d’autres limites. Un écart révèle souvent un problème de propriétaire de fichiers.