Migration Troubleshooting
Moving a WordPress site to a new host or domain can be tricky. This guide covers the most common migration issues and how to fix them.
Migration Fails or Times Out
Large sites with many files can time out during migration package creation or import.
Package Creation Times Out
Symptom: "Migration package creation failed" or progress bar stops
Solutions:
- Increase PHP limits - Set
max_execution_time = 300andmemory_limit = 512M(see note below) - Exclude large folders - Go to Settings and exclude cache directories, logs, or large media folders
- Try database-only first - Create a database-only migration package, then manually FTP the files
- Use incremental - Enable incremental backups to reduce package size (Pro)
On shared hosting, you usually can't edit php.ini directly. Try these alternatives:
- Add to
.htaccess:php_value max_execution_time 300 - Create
.user.iniin WordPress root with:max_execution_time = 300 - Use your hosting panel (cPanel > PHP Settings, or similar)
- Contact your host's support to increase limits
Import Fails on Destination
Symptom: Installer script shows error during database import or file extraction
Solutions:
- Check disk space - Ensure destination has at least 3x the package size available
- Verify database credentials - Double-check the database name, username, password, and host
- Check database permissions - User needs CREATE, DROP, INSERT, UPDATE, DELETE, ALTER permissions
- Try importing manually - Extract the package, import SQL via phpMyAdmin, upload files via FTP
SiteVault Pro's push/pull migration handles large sites better with chunked transfers and automatic retry on failure.
White Screen After Migration
A white screen (WSOD) after migration usually indicates a PHP error or database connection issue.
Step-by-Step Diagnosis Common Fix
Enable Debug Mode
Edit wp-config.php on the destination site and add:
Check Error Messages
Refresh the page to see the actual error, or check wp-content/debug.log
Common Fixes Based on Error
See below for solutions to specific error messages
"Error establishing database connection"
The database credentials in wp-config.php don't match the new server
Fix:
- Open wp-config.php
- Update
DB_NAME,DB_USER,DB_PASSWORD, andDB_HOSTto match your new hosting - On many hosts, DB_HOST is
localhostbut some use IP addresses or custom hostnames
"Fatal error: Class not found" or "require_once() failed"
Files weren't uploaded correctly or file paths are wrong
Fix:
- Re-upload all files from the migration package
- Check file permissions (folders: 755, files: 644)
- Verify no files were skipped during FTP upload
"Parse error" or "Syntax error"
PHP version mismatch between servers
Fix:
- Check the PHP version on your old host
- Match it on the new host (or upgrade to PHP 8.0+)
- Contact your new host to change PHP version in hosting panel
URL Replacement Issues
After migration, URLs may still point to the old domain, causing broken links or redirect loops.
Site Redirects to Old Domain
Visiting new domain redirects to old domain, or infinite redirect loop
Solutions:
- Check wp-config.php - Add these lines before "That's all, stop editing!":
If that doesn't work, also update the database directly:
Images and Links Point to Old Domain
Site loads but images are broken, internal links go to old domain
Solutions:
- Run search-replace - SiteVault Pro includes automatic URL replacement during migration
- Use WP-CLI - If you have SSH/command line access:
Most shared hosts don't provide SSH access. Use the free "Better Search Replace" plugin instead - it handles serialized data safely and works entirely through the WordPress admin.
Simple find-replace in phpMyAdmin will break serialized data in WordPress options. Always use a tool that handles serialization (SiteVault, WP-CLI, or Better Search Replace).
Mixed Content Warnings (HTTP/HTTPS)
Browser shows "Not Secure" or blocks some content
Solutions:
- Run search-replace from
http://tohttps:// - Check theme/plugin settings for hardcoded URLs
- Add this to .htaccess to force HTTPS:
File Permission Issues
Incorrect file permissions can cause uploads to fail, plugins to break, or security warnings.
Can't Upload Images or Install Plugins
"Unable to create directory" or "Upload failed" errors
Fix file permissions:
- Folders should be
755(rwxr-xr-x) - Files should be
644(rw-r--r--) - wp-config.php should be
600or640
Method 1: Via FTP Client (Recommended for Shared Hosting)
- Connect to your site with FileZilla, Cyberduck, or similar FTP client
- Select the folders/files you need to fix
- Right-click and choose "File Permissions" (or similar)
- Enter 755 for folders, 644 for files
- Check "Recurse into subdirectories" if available
Method 2: Via SSH (VPS/Dedicated Servers)
File Ownership Wrong
Permissions look correct but uploads still fail
Fix:
Files may be owned by the wrong user. This is common after FTP uploads.
On shared hosting, you typically cannot change file ownership yourself. Contact your host's support and ask them to fix ownership on your WordPress directory. They can run the appropriate chown command for you.
VPS/Dedicated servers: Run via SSH:
(Replace www-data with your server's web user - may be apache, nginx, or your cPanel username)
Push/Pull Migration IssuesPRO
Direct server-to-server migration troubleshooting.
How Push Migration Works
Push migration transfers your site directly between servers using chunked uploads:
- Source site (old server) creates migration package and pushes to destination
- Destination site (new server) receives chunks and assembles the package
- Uses chunked uploads to handle large sites without timeout issues
Setting Up Push Migration
On Destination (new server):
- Install WordPress + SiteVault Pro
- Go to SiteVault → Migration
- Find the Pull Migration section
- Copy the Secret Key (auto-generated 32-char string)
On Source (old server):
- Go to SiteVault → Migration
- Find the Push Migration section
- Enter:
- Destination URL:
https://newsite.com - Secret Key: (paste from destination)
- Destination URL:
- Click Push to Remote
The secret key is stored in wp_options as rb_pull_secret_key. Regenerate it after migration: SiteVault → Migration → Click "Regenerate". Push migration requires the destination site to be publicly accessible.
Can't Connect to Remote Site
"Connection failed" or "Invalid response from remote site"
Checklist:
- SiteVault Pro is installed and activated on BOTH sites
- Secret key is entered correctly (check for extra spaces)
- Remote site is accessible via HTTPS
- Firewall isn't blocking the connection
- REST API is not disabled on remote site
"Chunk X Failed" Error
Migration fails partway through with chunk upload errors
Cause:
Permission issues on destination server - PHP can't write to temp directory.
Solution (VPS/Dedicated Servers):
Key directories that need write access:
wp-content/uploads/royal-backups/temp/- chunk assemblywp-content/uploads/royal-backups/backups/- final packages
On shared hosting, contact your host's support and ask them to fix permissions on your wp-content/uploads/royal-backups/ directory. They can run the appropriate chown command for you.
Transfer Stalls or Fails
Progress shows but never completes
Possible Causes:
- Shared hosting outbound firewall restrictions
- PHP timeout on source server
- Large chunks timing out
Solutions:
- Check server timeout settings (increase to 300+ seconds)
- Check source server's
max_execution_time - Disable any caching plugins temporarily
- Try during off-peak hours when server load is lower
- If package is very large, use manual migration with FTP instead
Database Prefix Mismatch
Source site has different table prefix than destination (e.g., vIP_ vs wp_)
Solution:
After downloading the SQL file, run search-replace before importing:
Manual Migration Fallback
If push migration fails partway through, you can often recover manually from the partially transferred files.
Recovering from Failed Push Advanced
Step 1: Check What Was Transferred
Typically contains:
database.sql- Full database dumpplugins/- All pluginsthemes/- All themesuploads/- Media filesmanifest.json- Package metadata
Step 2: Manual Restore
Step 3: Activate Plugins
Pre-Migration Checklist
Complete these steps before starting any migration to ensure a smooth process.
On Source Server (Before Migration)
- ☐ Disable security plugins that send email alerts (prevents email flood)
- ☐ Note current plugin list and versions
-
☐
Verify database prefix (
wp-config.php→$table_prefix) - ☐ Have cPanel/FTP access as backup
On Destination Server (Before Migration)
- ☐ Fresh WordPress installed
- ☐ SiteVault Pro installed and activated
-
☐
wp-content/uploads/writable by web server - ☐ PHP memory limit ≥ 256M
- ☐ PHP max_execution_time ≥ 300
WooCommerce Migration Notes
WooCommerce sites require special attention during migration due to theme and plugin dependencies.
Theme Activation Order
Problem: Theme crashes with "Call to undefined function is_checkout()" or similar
If your theme uses WooCommerce functions (like is_checkout()), you must activate WooCommerce BEFORE the theme:
If you're on shared hosting without WP-CLI access, do this via FTP: rename your theme folder temporarily, activate WooCommerce in wp-admin, then rename the theme folder back.
Verify Data After Migration
After migrating a WooCommerce site, verify your critical data:
Also check in wp-admin:
- Products → All Products (verify count matches)
- WooCommerce → Orders (verify orders exist)
- WooCommerce → Settings → Payments (reconfigure if needed)
- Test checkout process with a test order
Troubleshooting Commands
Useful commands for diagnosing migration issues (requires SSH access).
Server Diagnostics Advanced
If you don't have SSH access, most of these can be done through wp-admin or phpMyAdmin. Use the "Better Search Replace" plugin for URL replacement.
Post-Migration Checklist
After a successful migration, verify everything is working:
- Homepage loads correctly
- Admin login works
- All pages and posts are accessible
- Images display properly
- Forms submit successfully
- E-commerce checkout works (if applicable)
- SSL certificate is active (green padlock)
- Permalinks are working (Settings > Permalinks > Save)
- Search functionality works
- Contact forms send emails
After migration, go to Settings > Permalinks and click Save Changes (without changing anything). This regenerates .htaccess and fixes many 404 errors.
If you're changing hosts, update your domain's DNS to point to the new server. DNS propagation can take up to 48 hours worldwide.
Still Need Help?
If you're still having trouble with your migration:
- Check the WordPress error log:
wp-content/debug.log - Check server error logs in your hosting control panel
- Try a manual migration: export database, FTP files, import database, run search-replace
For SiteVault Pro customers, contact our support team for priority assistance with your migration.