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)
- Installer/activer le plugin sur le site cible.
- Importer la sauvegarde et activer l’option d’upload par morceaux.
- Lancer l’import → le plugin réassemble l’archive côté serveur.
- 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/homeen 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/uploadssé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-contentcopié- 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()danswp-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)
