Importer efficacement de grosses archives WordPress (sans erreur)

Lors d’un import volumineux (grosse sauvegarde, migration, passage en local), on se heurte vite aux timeouts, limites mémoire et tailles d’upload.

Voici une méthode fiable et reproductible : d’abord augmenter les limites, puis choisir la bonne stratégie d’import (plugin en morceaux ou WP-CLI), et enfin vérifier.

Avant de commencer : vérifier l’environnement

  • Poids de l’archive (compressé vs décompressé).
  • Version PHP (≥7.4 recommandé) & extensions (zip, mysqli).
  • Accès : FTP/SSH, phpMyAdmin ou WP-CLI (idéal).
  • Espace disque suffisant (x2 le poids de l’archive pendant l’opération).

Augmenter proprement les limites (PHP/serveur)

Les limites de WordPress dépendent d’abord des limites PHP/serveur.
La constante WP_MAX_UPLOAD_SIZE n’existe pas et n’a aucun effet.

php.ini (recommandé, local/Docker/MAMP/WP-Engine custom)

memory_limit = 2048M
upload_max_filesize = 5120M
post_max_size = 5120M
max_execution_time = 300
max_input_time = 300

.user.ini (hébergements mutualisés PHP-FPM)

memory_limit=2048M
upload_max_filesize=5120M
post_max_size=5120M
max_execution_time=300

.htaccess (si autorisé)

php_value memory_limit 2048M
php_value upload_max_filesize 5120M
php_value post_max_size 5120M
php_value max_execution_time 300

WordPress (complément)

Dans wp-config.php, utile pour l’admin/traitements lourds :

define('WP_MEMORY_LIMIT', '512M');        // front
define('WP_MAX_MEMORY_LIMIT', '2048M');   // admin/tâches lourdes

Reverse proxy / serveur web

Nginx : client_max_body_size 5120M;

Apache : parfois LimitRequestBody (rarement requis)

Option A — Import par morceaux avec un plugin WPVivid.com

Quand tu ne disposes pas de SSH/WP-CLI ou que l’archive est très lourde :

  • WPvivid Backup & Migration : import chunké (morceaux) → réduit les échecs liés aux timeouts/mémoire.
  • Duplicator / All-in-One WP Migration : efficaces également (attention aux limites/licences pour très gros volumes).

Procédure type (WPvivid)

  1. Installer/activer le plugin sur le site cible.
  2. Importer la sauvegarde et activer l’option d’upload par morceaux.
  3. Lancer l’import → le plugin réassemble l’archive côté serveur.
  4. Vérifier : URLs, médias, extensions actives.

Astuce : désactiver temporairement les plugins lourds (cache, sécurité) pendant l’import.

Option B — Méthode pro avec WP-CLI (recommandée)

La plus robuste pour grosses archives et environnements stables (local, SSH).

Ce plugin réduit les risques d’échec dus aux timeouts ou aux limites de mémoire.

Décompresser & déposer les fichiers

  • Dépose l’archive sur le serveur/local.
  • Décompresse sur place (évite l’upload d’un énorme dossier décompressé).
unzip sauvegarde.zip -d ./restore
# ou 7z x sauvegarde.7z -o./restore

Restaurer la base de données

Place-toi à la racine WordPress

wp db drop --yes
wp db create
wp db import ./restore/dump.sql

Copier wp-content

rsync -a ./restore/wp-content/ ./wp-content/
# ou cp -R selon l’environnement

Remplacer les URLs (prod → local ou nouveau domaine)

wp search-replace 'https://www.site-prod.com' 'http://local.test' --all-tables --precise

Finaliser

wp plugin deactivate --all
wp plugin activate classic-editor  # ex. optionnel si besoin
wp theme activate twentytwentyfour # activer un thème propre au besoin
wp rewrite flush --hard
wp cache flush

Gagne du temps avec des scripts : tu pourras rejouer la procédure.

Dépannage : erreurs fréquentes & solutions

  • “Allowed memory size exhausted” → augmente memory_limit + désactive plugins lourds → préfère WP-CLI.
  • “Maximum execution time exceeded” → augmente max_execution_time / utilise WP-CLI.
  • “413 Request Entity Too Large” (upload) → augmente client_max_body_size (Nginx) + upload_max_filesize/post_max_size.
  • Archive corrompue → vérifier unzip -t sauvegarde.zip ; ré-uploader ou re-créer la sauvegarde en plusieurs parties (7-Zip).
  • Images manquantes / 404 → regénérer miniatures (plugin) ou wp media regenerate.
  • Boucle de redirection → vérifier siteurl/home en DB (wp option get siteurl|home) et .htaccess.

Après l’import : remettre à niveau (sécurité & perf)

  • Revenir à des limites raisonnables (memory_limit, max_execution_time).
  • Activer et configurer le cache (server cache + plugin).
  • Recalculer les permaliens (Enregistrer dans Réglages > Permaliens).
  • Repasser un œil à PageSpeed/Lighthouse.
  • Sauvegarde de référence : fais un snapshot post-import (point de retour propre).

Plan B ultra-lourd : découper l’archive

  • Fichiers : compresser wp-content/uploads séparément par année/mois.
  • Base : exporter/importer la DB à part (gzip .sql.gz).
  • Assemblage côté serveur (décompression + rsync) → WP-CLI pour le finish.

Mini-checklist (à coller dans ta doc projet)

  • Limites PHP/Nginx/Apache augmentées
  • Plugin “chunk” ou WP-CLI prêt
  • DB importée + search-replace URLs
  • wp-content copié
  • Permaliens enregistrés / cache vidé
  • Tests : pages clés, formulaires, médias, back-office
  • Limites remises à un niveau normal

Exemple de “faux amis” à éviter

  • define('WP_MAX_UPLOAD_SIZE', '5000M');n’existe pas dans WordPress (inutile).
  • Mettre set_time_limit() dans wp-config.php → souvent ignoré par l’hébergeur.
  • Laisser des limites énormes en prod après import → risque sécurité/perf.

Outils utiles

  • WP-CLI (indispensable en pro)
  • WPvivid / Duplicator / All-in-One (imports chunkés)
  • 7-Zip (découpage/assemblage)
  • Lighthouse/PageSpeed (contrôle final)
Catégories : WordPress
Retour en haut