Skip to content
WP Cloud
WP Cloud
    • For Hosts
    • For Agencies
    • For Registrars
    • For Native Hosting
    • Performance
    • Security
    • Real-Time Automated Failover
    • Vertical Scaling and Bursting
    • WordPress Management
    • PanelAlpha Integration: White-Label WordPress Control Panel for Hosts
    • EasyEngine Panel Integration: Visual WordPress Management for WP Cloud
    • FAQs
    • WP Cloud API
    • Partner Portal
    • Documentation
    • New Partner Guide
    • Pressable
    • Convesio
    • Porkbun
    • PanelAlpha
    • Ivapix
    • UNC Greensboro
    • Impressive Hosting
    • Blog
    • Performance Benchmarks
  • Connect With Us
  • Login ↗
Start Here ↗
  • Solutions

    • For Hosts
    • For Agencies
    • For Registrars
    • For Native Hosting
    • Featured Partners

    Features

    • Performance
    • Security
    • Real-Time Automated Failover
    • Vertical Scaling and Bursting
    • WordPress Management

    Integrations

    • PanelAlpha Integration
    • Easy Engine Panel Integration

    Resources

    • FAQs
    • WP Cloud API
    • Partner Portal
    • Documentation
    • New Partner Guide
  • Case Studies
    • PressableA case study about how WP Cloud supports Pressable to power millions of page views daily.
    • Convesio
    • Porkbun
    • PanelAlpha
    • Ivapix
    • UNC Greensboro
    • Newspack
    • Inverse Paradox
  • Insights
    • Podcast
    • BlogWP Cloud blog page with latest news and updates about the platform.
    • Performance Benchmarks
  • Connect With Us
  • Login ↗
Start Here ↗

Browse

    • WP Cloud platform overview
    • Onboard and launch with WP Cloud
    • WP Cloud Partner Portal
    • Get support from WP Cloud
    • WP Cloud glossary
    • Manage and secure API keys
    • Client SSH
    • WP Cloud API quick start
    • Webhooks
    • Run bulk tasks across sites
      • Manage site domains and aliases
      • Domain verification records
      • TLS certificates
      • Manage custom TLS certificates
      • Cloudflare and WP Cloud
    • Clone a site
    • Configure resources, site type, and billing with site meta
    • Delete a site
    • Persistent data
    • Staging sites
    • Migrate a site to WP Cloud
      • SSH and SFTP access models
      • Client SSH
      • User SSH and SFTP access
      • Database credentials
      • phpMyAdmin
      • ABSPATH
      • Default wp-config.php
      • Site constants
      • Configure redirects and headers with custom-redirects.php
      • Akismet and Jetpack
      • Blocked and unsupported plugins
      • PHP lifecycle and supported versions
      • Symlinks and managed software
      • WordPress versions
      • Install Composer and WP-CLI packages
      • Manage platform software with WP-CLI
      • Useful WP-CLI commands
    • Transactional email
    • WordPress multisite
    • Cron scheduling
    • Decoupled and headless WordPress
    • Repair Yoast indexables
      • Page Cache
      • Edge Cache
      • Object Cache
      • Image transformation
      • Offload image sub-sizes
    • Configure lightweight 404s for static files
      • DDoS protection
      • Defensive Mode
      • Rate limiting
      • Network and web application firewalls
      • Bot protection
      • Password protection
      • HTTP and security headers
      • PHP filesystem access permissions
      • Scan a site for malware
    • Backups overview
    • Create an on-demand backup
    • Restore a backup
    • Jetpack backups
      • Error logs
      • Web server logs
    • Metrics
    • Application performance monitoring
    • Automated failover
    • IP ranges
    • Origin and edge servers
    • Server specifications and settings
    • EasyEngine integration
    • PanelAlpha integration
      • White labelling and co-marketing WP Cloud
      • WP Cloud logos
      • Terms of Service & Compliance
      • Prohibited content
      • Copyright infringement and takedown notifications
    • WP Cloud billing
    • WP Cloud for agencies and site networks
    • WP Cloud partner support options
    • Troubleshoot Page and Edge Cache
    • Troubleshoot HTTP 429 and 599 errors
    • WP Cloud HTTP status codes
    • Troubleshoot site performance
    • Cache slow database queries
    • Troubleshoot duplicate core files, wp-config.php, and wp-admin 403 errors
    • Troubleshoot email delivery
    • Troubleshoot PDF thumbnail generation
    • Troubleshoot TLS certificate provisioning
Documentation/Troubleshooting/Troubleshoot duplicate core files, wp-config.php, and wp-admin 403 errors

Troubleshoot duplicate core files, wp-config.php, and wp-admin 403 errors

LAST UPDATED

3 months ago

    Duplicate WordPress core files or a missing or broken wp-config.php can make WP-CLI report wp-config.php not found, claim that wp-settings.php is not loaded directly, return xargs: sudo: exited with status 255, or make /wp-admin/ return HTTP 403. After migrations, duplicate core files are often the cause even when wp-config.php is present.

    Start with the filesystem because these symptoms can share the same cause. Do not assume that an error naming wp-config.php proves the file is missing. Archive confirmed duplicate core files before rebuilding configuration, then move to the next check only when the symptom remains.

    Check for duplicate core files

    A normal WP Cloud site root contains the managed core symlink, site content, and bootstrap files. It commonly looks like:

    __wp__/
    jetpack-temp/
    wp-config.php
    wp-content/
    wp-load.php

    The exact site can contain intentional custom files and directories. Do not delete an unfamiliar file merely because it is absent from this short list.

    The following are common duplicate core paths after an imported copy of WordPress is placed over WP Cloud’s managed core:

    wp-admin/
    wp-includes/
    index.php
    wp-activate.php
    wp-blog-header.php
    wp-comments-post.php
    wp-config-sample.php
    wp-cron.php
    wp-links-opml.php
    wp-login.php
    wp-mail.php
    wp-settings.php
    wp-signup.php
    wp-trackback.php
    xmlrpc.php

    Confirm that each path is an unnecessary duplicate rather than customer code. Create an .old-imported directory and move confirmed duplicates there instead of deleting them immediately. This provides a rollback if the classification was wrong.

    Flush Page Cache after moving the files:

    wp cache flush

    Then check /wp-admin/ and the original WP-CLI command again.

    Check wp-config.php

    If the duplicate files were not the cause, confirm that wp-config.php exists in the site root. Restore it from a known-good backup when it contains required custom configuration. If the file exists but every WP-CLI command fails, check its PHP syntax and compare it with Default wp-config.php.

    When no usable backup exists, start from that default example and generate a unique set of authentication keys and salts at WordPress.org’s salt service. Never reuse salts from another site. Upload the completed file through SSH or SFTP, then rotate the values once more if appropriate:

    Replace every placeholder in the authentication section, including all eight key and salt values:

    define( 'AUTH_KEY',         'unique value' );
    define( 'SECURE_AUTH_KEY',  'unique value' );
    define( 'LOGGED_IN_KEY',    'unique value' );
    define( 'NONCE_KEY',        'unique value' );
    define( 'AUTH_SALT',        'unique value' );
    define( 'SECURE_AUTH_SALT', 'unique value' );
    define( 'LOGGED_IN_SALT',   'unique value' );
    define( 'NONCE_SALT',       'unique value' );Code language: JavaScript (javascript)

    The salt service supplies the complete definitions; the placeholders above only show which entries must exist. Do not publish, copy between sites, or commit the generated values to a shared repository.

    wp config shuffle-salts

    Check the database prefix

    If WordPress starts but does not find the expected site data, inspect the database tables and the $table_prefix value in wp-config.php. The value must match the actual prefix. Do not assume it is wp_ after a migration.

    When the prefix is correct, WordPress should load the existing site’s users, options, and content rather than presenting a fresh installation. If the site still behaves like a new installation, compare the selected database and table names before changing data.

    Keep .old-imported until the site owner confirms that the site, wp-admin, scheduled tasks, and WP-CLI work normally. It can then be removed after any needed custom files have been recovered.

    The issue is resolved when /wp-admin/ loads, WP-CLI works without the original configuration error, and WordPress reads the expected database tables.

    Previous Cache slow database queries
    Next Troubleshoot email delivery

    Related Guides

    • Troubleshoot Page and Edge Cache

      Diagnose Page Cache and Edge Cache misses using response headers, cookies, cache controls, bypass code,…

      5 Min.

      READ

    • Troubleshoot HTTP 429 and 599 errors

      Partner support teams can distinguish visitor-facing HTTP 429 responses from WP Cloud HTTP 599 records,…

      6 Min.

      READ

    • WP Cloud HTTP status codes

      Understand HTTP status codes reserved for WP Cloud suspension, maintenance, security, and rate-limiting responses.

      1 Min.

      READ

    On this page

      Contact support

      Contact us with Support issues and questions related to WP Cloud, the WP Cloud Atomic API, API-key IP allow list changes, Station, and more.

      Check the FAQs

      Have questions? Please visit our FAQ to learn more.

      An Automattic venture

      Work With Us

      Press

      Privacy Policy

      © 2021-2026 Automattic Inc.

      Notifications