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

Erreurs WordPress · Mises à jour et installation

« Une autre mise à jour est actuellement en cours » : débloquer

Mise à jour

« Une autre mise à jour est actuellement en cours » : le verrou core_updater.lock expire après 15 minutes. Lire, supprimer le verrou et relancer.

Message affiché

Une autre mise à jour est actuellement en cours.

En anglais : Another update is currently in progress.

Réponse rapide

WordPress a posé un verrou (option core_updater.lock) au début d’une mise à jour du cœur et ne l’a pas encore retiré. Patientez 15 minutes : le verrou expire seul. Sinon, supprimez l’option après sauvegarde, si rien ne tourne.

Vous ouvrez Tableau de bord > Mises à jour, vous cliquez sur « Mettre à jour vers la version… » et la page affiche, dans le journal de l’opération : « Une autre mise à jour est actuellement en cours. » Rien ne s’installe, et WordPress n’ajoute pas son habituel « Échec de l’installation » : seul ce texte s’affiche. L’erreur concerne la mise à jour du cœur de WordPress, et elle apparaît dans l’administration.

C’est une protection : WordPress refuse de lancer deux mises à jour du cœur en même temps pour éviter qu’elles s’écrasent mutuellement. Le problème est que la protection peut rester active après une mise à jour qui s’est mal terminée. Voici comment savoir si une mise à jour tourne vraiment, et comment retirer le verrou sans risque.

Ce que signifie cette erreur

Au début d’une mise à jour du cœur, la méthode Core_Upgrader::upgrade() (wp-admin/includes/class-core-upgrader.php) demande un verrou : WP_Upgrader::create_lock( 'core_updater', 15 * MINUTE_IN_SECONDS ). Le verrou est une simple ligne dans la table des options, nommée core_updater.lock, dont la valeur est l’horodatage Unix de sa création. L’insertion se fait par une requête INSERT IGNORE (wp-admin/includes/class-wp-upgrader.php, méthode create_lock()).

Si la ligne existe déjà, WordPress compare son horodatage à l’heure courante : tant qu’il date de moins de 15 minutes, le verrou est considéré valide, la méthode renvoie false et upgrade() retourne l’erreur locked avec le texte « Une autre mise à jour est actuellement en cours. ». Si le verrou a plus de 15 minutes, WordPress le supprime et en recrée un. À la fin normale de la mise à jour, ou sur la plupart des erreurs gérées, le verrou est libéré par release_lock(). En revanche, si PHP s’arrête brutalement (erreur fatale, délai dépassé, processus tué, connexion coupée), personne ne le libère : il reste jusqu’à son expiration.

Il existe un second verrou, auto_updater.lock, pris par WP_Automatic_Updater::run() pour les mises à jour automatiques, avec une durée par défaut d’une heure. Il ne produit pas ce message, mais il montre qu’une tâche automatique est en cours.

Diagnostic rapide

Symptôme / constatCause probableÀ vérifier
Le message apparaît quelques minutes après une tentative de mise à jour interrompueVerrou posé par la tentative précédente, pas encore expiréPatienter 15 minutes, puis relancer
Le message apparaît sans que vous ayez rien lancéMise à jour automatique en cours (WP-Cron) ou lancée par un autre administrateurTâches planifiées, mises à jour automatiques, journal
Le message persiste plus de 15 minutesHorodatage du verrou incohérent (dans le futur), horloge du serveur décalée, tentatives répétéesValeur de core_updater.lock et heure du serveur
Le site est en maintenance et le message apparaîtMise à jour interrompue qui a laissé .maintenance et le verrouRacine du site, fiche maintenance bloquée
Le message revient à chaque tentative, même après suppression du verrouLa mise à jour échoue en cours de route et laisse un verrouJournal d’erreurs PHP, droits, espace disque

Les causes les plus fréquentes

  1. Une mise à jour du cœur interrompue (onglet fermé, coupure réseau, limite de temps ou de mémoire PHP) dont le verrou n’a pas encore atteint ses 15 minutes.
  2. Deux lancements simultanés : double clic, deux administrateurs, ou une mise à jour manuelle pendant qu’une mise à jour automatique du cœur est déjà en cours.
  3. Un hébergement lent ou mutualisé où la mise à jour dure plus longtemps que prévu et où un nouvel essai est lancé trop tôt.
  4. Une horloge de serveur décalée, ou un verrou dont l’horodatage est dans le futur, qui ne devient donc jamais périmé.
  5. Une mise à jour qui échoue systématiquement pour une autre raison (droits, disque, réseau) et qui laisse un verrou à chaque essai.

Solutions pas à pas

1. Attendre quinze minutes

À appliquer d’abord, sans rien toucher. Ne relancez rien pendant ce délai : une deuxième tentative n’aurait aucun effet, et si une mise à jour tourne réellement, vous risqueriez de la gêner. Au bout de 15 minutes, rechargez Tableau de bord > Mises à jour et relancez. Si le verrou est périmé, WordPress le remplace automatiquement.

2. Lire le verrou et vérifier qu’aucun processus ne tourne

Si le message persiste, regardez l’état réel. Depuis phpMyAdmin ou en ligne de commande (adaptez le préfixe de table wp_) :

SELECT option_name,
       FROM_UNIXTIME(CAST(option_value AS UNSIGNED)) AS pose_le,
       UNIX_TIMESTAMP() - CAST(option_value AS UNSIGNED) AS age_en_secondes
FROM wp_options
WHERE option_name IN ('core_updater.lock', 'auto_updater.lock');

Un âge inférieur à 900 secondes signifie que le verrou est encore valide ; un âge négatif indique un horodatage dans le futur, donc un verrou qui ne se libérera pas seul. Contrôlez aussi qu’aucune mise à jour automatique n’est active, et l’heure du serveur :

wp option get core_updater.lock
wp cron event list --fields=hook,next_run_relative
ps aux | grep -E "wp core|wp-cron|php-fpm: pool" | grep -v grep
date +%s

Comparez la valeur de l’option avec date +%s. Si une mise à jour semble bien en cours (processus actif, fichiers qui changent dans wp-includes), attendez qu’elle se termine.

3. Supprimer le verrou

À appliquer quand le verrou date de plus de 15 minutes mais bloque quand même, ou quand son horodatage est dans le futur, et seulement si vous avez vérifié qu’aucune mise à jour ne tourne. Faites une sauvegarde de la base avant de modifier la table des options (voir notre article sur les sauvegardes et plans de reprise). Avec WP-CLI :

wp option delete core_updater.lock

Sans WP-CLI, depuis phpMyAdmin :

DELETE FROM wp_options WHERE option_name = 'core_updater.lock';

Si le site utilise un cache d’objets persistant (Redis, Memcached), videz-le ensuite avec wp cache flush ou depuis l’extension, pour qu’une ancienne valeur ne continue pas d’être lue.

4. Remettre le site en état, puis relancer la mise à jour

Une mise à jour interrompue peut avoir laissé un fichier .maintenance à la racine et des fichiers dans wp-content/upgrade. Supprimez le fichier .maintenance s’il existe, comme l’explique la fiche maintenance bloquée, puis relancez la mise à jour depuis l’administration ou en ligne de commande, qui évite les limites de temps du navigateur :

wp core update
wp core verify-checksums
wp core update-db

wp core verify-checksums compare les fichiers du cœur aux sommes de contrôle officielles et révèle une mise à jour restée à moitié faite. La dernière commande n’est utile que si WordPress demande une mise à niveau de la base de données.

5. Traiter la cause si l’erreur revient

Un verrou qui réapparaît à chaque essai signifie que la mise à jour s’interrompt toujours au même endroit. Consultez le journal d’erreurs PHP et la fiche mise à jour échouée : droits d’écriture, disque saturé, mémoire insuffisante ou accès sortant bloqué sont les suspects habituels. Si l’échec concerne les droits, la fiche « Impossible de créer le dossier » détaille la correction.

6. Éviter les collisions avec les mises à jour automatiques

Si vous lancez souvent les mises à jour à la main, sachez qu’une mise à jour automatique peut démarrer en même temps. Vous pouvez la suspendre pendant votre intervention dans wp-config.php :

define( 'AUTOMATIC_UPDATER_DISABLED', true );

Retirez la ligne ensuite : désactiver durablement les mises à jour automatiques vous prive des correctifs de sécurité. Notre guide sur les mises à jour automatiques de WordPress aide à décider jusqu’où les activer.

Prévenir l’erreur

  • Lancez une seule mise à jour du cœur à la fois, et ne fermez pas l’onglet avant le message de confirmation.
  • Pour les sites lents ou volumineux, privilégiez wp core update en ligne de commande, qui n’est pas soumis à la limite de temps du navigateur.
  • Prévenez les autres administrateurs avant une opération de maintenance, et coordonnez-la avec les mises à jour automatiques.
  • Gardez l’horloge du serveur synchronisée (NTP) : un verrou dans le futur ne se libère pas.
  • Faites une sauvegarde complète avant chaque mise à jour du cœur.

FAQ

Combien de temps dure le verrou de mise à jour ?

15 minutes pour le cœur : si l’horodatage du verrou core_updater.lock date de plus de 900 secondes, WordPress le considère comme périmé, le supprime et en recrée un. Le verrou des mises à jour automatiques, auto_updater.lock, dure une heure par défaut.

Est-il dangereux de supprimer core_updater.lock ?

Pas si aucune mise à jour ne tourne vraiment : l’option ne contient qu’un horodatage. Supprimer le verrou pendant qu’une mise à jour s’exécute risquerait de laisser deux opérations se mélanger. Vérifiez donc les processus avant, et faites une sauvegarde.

Où se trouve le verrou dans la base de données ?

Dans la table des options (wp_options avec le préfixe par défaut), sous le nom core_updater.lock. Vous pouvez la lire avec wp option get core_updater.lock ou une requête SQL.

Le message apparaît aussi pour les extensions et les thèmes ?

Non, ce verrou est propre à la mise à jour du cœur. Les mises à jour d’extensions et de thèmes ont leurs propres erreurs, décrites dans la fiche sur les mises à jour échouées.