THE SHORT ANSWER
Most hosting, PHP and cPanel errors come from five things: an account limit (disk, inodes, CPU or processes), a PHP setting in the wrong place, a missing PHP extension, wrong file permissions or ownership, or leftovers from a previous host such as old paths, handlers and DNS records. Check the cPanel error log and Resource Usage first. The table below maps 32 errors to their first fix.
When WordPress breaks, the cause often sits one layer down: in the server, PHP or cPanel. This guide covers that layer, from blocked IPs and disk quotas to PHP handlers, phpMyAdmin imports, AutoSSL and the errors that only appear after a hosting move. Each fix lists the exact error text, why it happens and the steps we use on client sites.
Applies to: cPanel with CloudLinux and LiteSpeed, PHP 8.3 to 8.5, MariaDB and MySQL 8, WordPress 7.1. Last verified: November 2026.
01Quick reference: every error, its likely cause and the first fix
Find your error, then jump to the full fix.
| Error | Most likely cause | Try first |
|---|---|---|
| IP blocked (cPHulk / firewall) | Repeated failed logins | Test on mobile data, ask host to unblock |
| This account has been suspended | Billing, abuse or malware | Contact the host |
| Disk quota exceeded | Old backups, logs, cache, email | cPanel Disk Usage cleanup |
| Inode limit reached | Cache, sessions, mail, backups | Find and clean high file-count folders |
| 508 Resource Limit Is Reached | CloudLinux CPU, memory or process limit | cPanel Resource Usage |
| FTP 530 Login authentication failed | Wrong username, password or protocol | Reset FTP password, use full username |
| SSH / SFTP connection refused | SSH disabled, wrong port or IP block | Check SSH port and access |
| PHP version won’t change | Old handler in .htaccess or two selectors | Remove stale AddHandler, set once |
| php.ini / .user.ini ignored | 5 minute cache or wrong file | Wait 5 min, check phpinfo |
| Invalid command php_value | PHP isn’t an Apache module | Move settings to .user.ini |
| Missing PHP extension (zip, intl, imagick) | Extension off for this PHP version | Enable it in Select PHP Version |
| open_basedir restriction | Old path or temp folder outside account | Fix the path |
| Function disabled for security reasons | Host blocks exec/shell functions | Use a PHP-only method or ask the host |
| OPcache serving old code | Compiled PHP cached in memory | Reset OPcache |
| Permission denied | Wrong permissions or ownership | Reset to 755/644 |
| 500 after chmod 777 | World-writable files blocked | Reset to 755/644 |
| Failed to write file to disk | Full disk or bad temp folder | Check quota and temp dir |
| Index of / or default host page | Wrong document root or missing index.php | Check document root in cPanel → Domains |
| #1045 Access denied for user | Wrong password or user not linked | Reset password, add user to DB |
| #2002 Can’t connect to MySQL | Wrong DB host or DB service down | Try 127.0.0.1 or host’s DB hostname |
| Unknown collation utf8mb4_0900_ai_ci | MySQL 8 export into older MariaDB | Replace collation in the SQL file |
| #1071 Specified key was too long | Old MySQL index limit | Upgrade the database server |
| phpMyAdmin import too large | Upload size and time limits | Import with WP-CLI or mysql over SSH |
| MySQL server has gone away | Packet size or timeout | Raise max_allowed_packet |
| AutoSSL DCV failed | DNS elsewhere, CDN, or blocked .well-known | Fix DNS, unblock /.well-known/ |
| DNS changes not showing | TTL cache or editing the wrong DNS | Check nameservers, wait for TTL |
| Email stopped after moving the site | MX and TXT records not copied | Recreate MX, SPF, DKIM records |
| Addon domain shows the wrong site | Wrong document root | Fix document root |
| Failed opening wordfence-waf.php | Old absolute path after migration | Fix auto_prepend_file in .user.ini |
| Old file paths after moving hosts | Absolute paths stored by plugins | Search and replace the old path |
| Migration plugin stuck | Upload, time or disk limits | Check error log, then go manual |
| cPanel cron not running / cron emails | No full path, output emailed | Full PHP path, redirect output |
02Start here: where hosting errors actually show up
Hosting problems hide in places WordPress never shows you. Before you change any setting, spend five minutes in these four spots. They name the real cause far more often than guesswork does.
| Where to look | What it tells you | Where to find it |
|---|---|---|
| Error log | PHP fatals, permission errors, missing files | cPanel → Metrics → Errors, or the error_log file in the site folder |
| Resource usage | CPU, memory, entry process and I/O limit hits | cPanel → Metrics → Resource Usage (CloudLinux hosts) |
| PHP settings | Active PHP version, extensions and limits | cPanel → MultiPHP Manager / Select PHP Version, or Tools → Site Health → Info in WordPress |
| Disk usage | Quota and inode (file count) usage | cPanel → Files → Disk Usage, and the stats sidebar |
WordPress-level errors such as the critical error, white screen, memory limit and upload limit are covered in our complete WordPress errors guide. This guide covers the layer underneath: the server, PHP configuration, cPanel, databases, DNS, SSL and moving between hosts.
FROM OUR DESK
When a site breaks right after a host change or a PHP switch, the cause is almost always one leftover line: a handler in .htaccess, an old path in .user.ini, or a database collation the new server doesn’t know. The fixes below start with those.
03cPanel account and access errors
Your IP address has been blocked (cPHulk) or the site times out only for you
Quick fix: Test from a phone on mobile data. If the site loads there, your IP is blocked by the server firewall. Ask your host to unblock it and tell them which login failed.
Why it happens: cPanel’s cPHulk brute force protection and firewalls such as CSF block an IP after repeated failed logins to cPanel, email, FTP or WordPress. Saved wrong passwords in an email app or FTP client trigger it again and again.
- Confirm the block by loading the site on a different network.
- Find your public IP (search “what is my IP”) and send it to your host’s support.
- Fix the source: update the saved password in your mail app, FTP client or backup tool.
- On a VPS with WHM, remove the IP in WHM → cPHulk Brute Force Protection or in the CSF firewall.
This account has been suspended
Quick fix: Contact your host’s billing or support team. Suspension is a manual or automatic account action, not a WordPress error.
Why it happens: Hosts suspend accounts for unpaid invoices, abuse reports, malware or repeated resource overuse.
- Check your email for a notice from the host. It usually states the reason.
- Pay the invoice or ask which rule was broken.
- If malware caused it, clean the site before asking for reactivation (see the security section of our WordPress errors guide).
- Keep off-site backups so a suspension never blocks access to your own data.
Disk quota exceeded (uploads fail, saving fails, email stops)
Quick fix: Open cPanel → Disk Usage, find the biggest folders and delete old backups, cache and log files. Then check the inode count too.
Why it happens: When the account hits its storage limit, PHP can’t write files. Uploads, updates, cache files, sessions and even incoming email start failing, often with vague errors.
- Open Disk Usage and sort by size.
- Look for old backup archives in the home folder or
wp-content(backup plugins keep many copies). - Delete large
error_logfiles after reading the latest errors. - Clear the cache folder of your cache plugin.
- Empty large mailboxes or set email retention.
- Move backups off the server, then set the backup plugin to keep only a few local copies.
Inode limit reached (too many files)
Quick fix: Find folders with huge file counts (cache, sessions, email, old backups) and clean them. The disk may look half empty while the file count is maxed out.
Why it happens: Shared hosts limit the number of files, not just total size. Cache plugins, image size variants, PHP session files and mail can create hundreds of thousands of small files.
- Check the inode count in the cPanel stats sidebar.
- Over SSH, find the heaviest folders with the command below.
- Clear plugin caches and old session files.
- Remove unused image sizes and regenerate only what the theme needs.
- Delete unused themes, plugins and staging copies inside the account.
find ~ -xdev -type f | cut -d/ -f1-5 | sort | uniq -c | sort -rn | head -20508 Resource Limit Is Reached
Quick fix: Check cPanel → Resource Usage to see which limit was hit (entry processes, CPU, memory or I/O), then reduce the load or upgrade the plan.
Why it happens: CloudLinux hosts give each account a box of resources. When a site uses up its entry processes or CPU, the server answers with 508 until usage drops.
- Open Resource Usage and look at the fault columns and the time of the spikes.
- Match spikes to bots, cron jobs, backups or a busy page in the access log.
- Enable page caching so most visits skip PHP.
- Block bad bots at the firewall or CDN.
- Move backups and heavy cron jobs to quiet hours.
- If normal traffic hits the limit, the site needs a bigger plan.
For the related 503 and 429 errors, see 503 Service Unavailable and 429 Too Many Requests.
FTP: 530 Login authentication failed
Quick fix: Use the full FTP username (often [email protected]), reset the FTP account password in cPanel → FTP Accounts, and check you’re connecting to the right host and port.
Why it happens: The username or password is wrong, the account belongs to a different domain, or the client is trying FTP on a server that only allows SFTP.
- Copy the exact username from cPanel → FTP Accounts.
- Reset the password there and paste it into your client.
- Use port 21 for FTP or the SSH port for SFTP. Some hosts use a custom SSH port, listed in their dashboard.
- Too many failed attempts can block your IP: see IP blocked.
SSH or SFTP: Connection refused or timed out
Quick fix: Check the SSH port and whether SSH access is enabled for your plan. Many shared hosts turn it off by default or use a non-standard port.
Why it happens: SSH is disabled, the port is wrong, your IP isn’t allowed, or the firewall blocked you.
- Find the SSH host, port and username in your hosting dashboard.
- Enable SSH access or add your IP to the SSH allowlist if the host requires it.
- Test with
ssh -p PORT user@hostfrom a terminal. - If it times out on every port, your IP may be blocked: test from another network.
Still broken after these steps?
Send us the URL and the exact error. Fixes start from $59, with a fixed quote within 24 hours and an NDA if you need it.
04PHP version and configuration errors
PHP version won’t change (or switches back) in cPanel
Quick fix: Open .htaccess and remove old AddHandler or SetHandler lines for PHP, then set the version again in one place only: MultiPHP Manager or Select PHP Version, not both.
Why it happens: cPanel writes the PHP version as a handler line in .htaccess. Old lines from a previous host or tool override the version you pick. CloudLinux hosts also have two selectors that can conflict.
- Check the real version in WordPress under Tools → Site Health → Info → Server.
- Back up
.htaccess, then look for blocks like the one below and remove stale ones. - Set the version again in your host’s PHP tool. On CloudLinux, set MultiPHP to the native or inherit option and use Select PHP Version.
- Reload Site Health to confirm.
# php -- BEGIN cPanel-generated handler, do not edit
<IfModule mime_module>
AddHandler application/x-httpd-ea-php81 .php .php8 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not editphp.ini or .user.ini changes don’t take effect
Quick fix: Wait 5 minutes, then check again in Site Health or with a phpinfo() page. PHP reads .user.ini on a timer, and the file must sit in the right folder.
Why it happens: PHP caches .user.ini settings for 300 seconds by default. Some hosts ignore custom ini files and want changes made in their PHP options screen. A php.ini in the wrong folder does nothing.
- Put
.user.iniin the WordPress root folder, next towp-config.php. - Wait at least 5 minutes, or restart PHP from the hosting panel if it offers that.
- Check the active value with a temporary
phpinfo()file, then delete it. - If nothing changes, use the host’s MultiPHP INI Editor or PHP Options screen instead.
500 error after adding php_value to .htaccess (Invalid command 'php_value')
Quick fix: Remove the php_value and php_flag lines from .htaccess and put the same settings in .user.ini instead.
Why it happens: Those directives only work when PHP runs as an Apache module. Most hosts now run PHP-FPM, LSAPI or CGI, where Apache doesn’t understand them and returns a 500 error.
- Open
.htaccessand delete lines starting withphp_valueorphp_flag. - Add the settings to
.user.iniinkey = valueformat. - Reload the site and confirm the values after 5 minutes.
; .user.ini
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300Missing PHP extension: Class ZipArchive not found, intl, imagick, curl or gd
Quick fix: Enable the extension in cPanel → Select PHP Version → Extensions, or ask your host to install it for your PHP version.
Why it happens: Each PHP version has its own extension list. Switching versions often leaves extensions like zip, intl or imagick turned off, and plugins that need them fail.
- Read the error:
ZipArchiveneedszip,NormalizerorIntlDateFormatterneedintl,imagecreatefrom…needsgd. - Tick the extension for the active PHP version and save.
- Check Tools → Site Health → Info → Server, which lists missing recommended modules.
open_basedir restriction in effect. File(…) is not within the allowed path(s)
Quick fix: Find which path the code tried to open. Usually it’s an old absolute path from a previous server, or a temp folder outside the account. Fix the path, or ask the host to add the folder.
Why it happens: PHP is only allowed to read and write inside certain folders. After a migration, settings that still point to /home/olduser/ or a system temp folder hit that wall.
- Note the file path in the warning.
- Search the database and config files for the old path, and update it.
- Set
WP_TEMP_DIRto a folder inside the account if it’s a temp folder problem. - If a plugin needs another folder, ask the host to allow it.
Warning: exec() has been disabled for security reasons
Quick fix: Check whether the plugin really needs that function. Most hosts disable exec, shell_exec and similar for security. Use a plugin that doesn’t need them, or move to a host or VPS that allows them.
Why it happens: The host lists dangerous functions in disable_functions. Backup, image and PDF plugins sometimes rely on them.
- Find the plugin in the warning path.
- Look for a setting in the plugin to use a PHP-only method.
- Ask your host whether they can enable the function for your account. Many won’t on shared plans.
Code changes don’t show up (OPcache serving old PHP)
Quick fix: Reset OPcache from your host panel, the LiteSpeed Cache toolbox or a cache plugin, or restart PHP. Then reload.
Why it happens: OPcache keeps compiled PHP in memory. Some servers only recheck files every few minutes, or never, so edits to PHP files seem to be ignored.
- Confirm the edit saved by reading the file over SFTP.
- Reset OPcache with your host tools or a cache plugin that offers it.
- Wait a few minutes if your host checks file times on a timer.
- For the browser and page cache side, see changes not showing.
05File and permission errors
failed to open stream: Permission denied
Quick fix: Check ownership and permissions of the file in the error. Folders should be 755 and files 644, owned by your account user.
Why it happens: PHP runs as your account user on most hosts. Files uploaded as another user, extracted by root, or copied with odd permissions can’t be read or written.
- Read the full path in the error.
- Check its permissions in File Manager (right-click → Change Permissions).
- Reset the whole site with the SSH commands below if many files are affected.
- If permissions look right but it still fails, ask the host to fix ownership. You can’t change owner without root.
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 640 wp-config.php500 error after setting files or folders to 777
Quick fix: Change them back to 755 for folders and 644 for files. Many servers refuse to run PHP from world-writable files.
Why it happens: Permission 777 lets anyone on the server write the file. Security modules such as suEXEC and suPHP block it on purpose.
- Find recently changed permissions (often
wp-contentoruploads). - Reset them to
755and644. - If a plugin asked for 777, it’s wrong. Fix ownership instead.
Upload failed: Failed to write file to disk
Quick fix: Check the disk quota and the PHP temp folder. This error means PHP received the file but couldn’t save it.
Why it happens: The account is out of space or inodes, the temp directory is full or unwritable, or the uploads folder has wrong permissions.
- Check disk quota and inodes.
- Check
wp-content/uploadspermissions. - Set
WP_TEMP_DIRto a writable folder inside the account and test again.
Browser shows “Index of /” or the host’s default page instead of the site
Quick fix: Make sure WordPress files are in the domain’s document root (often public_html) and that index.php exists there.
Why it happens: The domain points to a folder without an index file, or to a different folder than the one you uploaded to. Addon domains each have their own document root.
- In cPanel → Domains, check the document root for the domain.
- Confirm
index.php,wp-config.phpandwp-contentare in that folder. - If you see the host’s default page, DNS reaches the server but the site files are elsewhere or missing.
- Add
DirectoryIndex index.php index.htmlto.htaccessif the server doesn’t look forindex.php.
06Database and phpMyAdmin errors
#1045 Access denied for user
Quick fix: Reset the database user’s password in cPanel → MySQL Databases, make sure the user is added to the database with All Privileges, then update wp-config.php.
Why it happens: The username or password is wrong, or the user exists but was never attached to the database. On cPanel, names carry the account prefix, like acct_dbuser.
- Copy the full prefixed database name and user from MySQL Databases.
- Reset the user password and paste it into
wp-config.php. - Under “Add User to Database”, link the user and tick All Privileges.
- For the WordPress side of this error, see error establishing a database connection.
#2002 Can’t connect to MySQL server (No such file or directory)
Quick fix: Try 127.0.0.1 instead of localhost for DB_HOST, or the database hostname your host gives you. If that fails, the database service is down.
Why it happens: localhost makes PHP use a socket file. If the socket path is different or MySQL runs on another server, the connection fails.
- Check your hosting dashboard for the correct database host.
- Change
DB_HOSTinwp-config.phpand test. - Ask your host whether MySQL or MariaDB is running.
Unknown collation: utf8mb4_0900_ai_ci (database import fails)
Quick fix: The export came from MySQL 8 and the new server runs an older MariaDB or MySQL. Replace utf8mb4_0900_ai_ci with utf8mb4_unicode_520_ci in the SQL file, then import again.
Why it happens: MySQL 8 uses a collation that older MariaDB versions don’t recognize, so the import stops at the first table.
- Make a copy of the
.sqlfile. - Replace the collation name with a text editor that handles large files, or with
sedas shown below. - Import the edited file.
- Better long term: ask both hosts which database versions they run before you migrate.
sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_520_ci/g' backup.sql#1071 Specified key was too long; max key length is 767 bytes
Quick fix: Upgrade the database server, or ask the plugin developer for an update. Very old MySQL versions can’t index long utf8mb4 columns.
Why it happens: Older MySQL versions limit index size. A plugin creating a long indexed text column in utf8mb4 goes over that limit.
- Check the database version in Site Health → Info → Database.
- Ask your host to move you to a current MySQL or MariaDB version.
- If you can’t upgrade, report the error to the plugin developer.
phpMyAdmin import fails: file too large or times out
Quick fix: Import with WP-CLI or the mysql command over SSH instead of phpMyAdmin. They have no browser upload limit or timeout.
Why it happens: phpMyAdmin is limited by PHP upload size and execution time. Databases over a few hundred megabytes often fail halfway.
- Upload the
.sqlfile to the server over SFTP. - Import with one of the commands below.
- No SSH? Compress the file to
.sql.gz, or ask your host to import it for you.
wp db import backup.sql
# or
mysql -u DB_USER -p DB_NAME < backup.sqlMySQL server has gone away
Quick fix: Ask your host to raise max_allowed_packet and wait_timeout, and split very large imports into smaller files.
Why it happens: The database closed the connection because a query was too big or a script waited too long between queries.
- Note when it happens: during imports usually means packet size, during long scripts usually means timeout.
- Import with WP-CLI, which handles large files better.
- Ask the host for higher limits, or move heavy work to a VPS.
07Domain, DNS, SSL and email errors
AutoSSL failed: domain control validation (DCV) error
Quick fix: Make sure the domain’s DNS points to this server and that /.well-known/ isn’t redirected or blocked. If Cloudflare proxies the site, use a Cloudflare origin certificate or Full (strict) mode with a valid origin cert.
Why it happens: AutoSSL proves you own the domain by loading a test file from your server. If DNS points elsewhere, a redirect or firewall rule blocks the test file, or a CDN answers first, validation fails.
- In cPanel → SSL/TLS Status, read the exact failure for each domain.
- Remove or fix domains that no longer point to this server (old subdomains often fail).
- Exclude
/.well-known/from redirects and security rules. - Run AutoSSL again.
- For the browser warning side, see your connection is not private.
DNS changes not showing (site still loads the old host)
Quick fix: Check the record with a public DNS checker. If it’s correct there, wait for the old TTL to expire and clear your local DNS cache.
Why it happens: Resolvers keep old answers until the record’s TTL runs out. Changes at the wrong place, such as editing DNS at the registrar while nameservers point to Cloudflare, don’t take effect at all.
- Find which nameservers the domain uses with a WHOIS or DNS lookup.
- Edit DNS in that provider only.
- Before a planned move, lower the TTL to 300 seconds a day ahead.
- Flush your computer’s DNS cache and test in a private window.
Email stopped working after moving the website
Quick fix: Copy the old MX, SPF (TXT), DKIM and autodiscover records to the new DNS. Moving nameservers replaces every record, not just the website ones.
Why it happens: When you switch nameservers to a new host or CDN, the new zone starts empty or with defaults. Mail records that pointed to Google Workspace, Microsoft 365 or the old host disappear.
- Export or screenshot the old DNS zone before switching.
- Add the MX and TXT records to the new zone exactly as before.
- Check email delivery with an MX lookup tool.
- If mail was hosted on the old cPanel account, recreate the mailboxes and migrate messages before cancelling the old plan.
Addon domain or subdomain shows the wrong website
Quick fix: Check the document root for that domain in cPanel → Domains and point it to the right folder.
Why it happens: Each domain on a cPanel account has its own folder. A domain added with the default root, or pointing to public_html, shows the main site instead.
- Open cPanel → Domains and find the domain.
- Change its document root to the folder holding that site.
- Check the site’s own Site Address in its database matches the domain.
08Hosting transfer and migration errors
Moving a Divi site? Divi adds its own traps, like static CSS files and serialized Theme Options. See moving a Divi site to a new host or domain: 10 errors and fixes.
Failed opening required '/home/olduser/…/wordfence-waf.php' after a migration
Quick fix: Edit .user.ini (and .htaccess) in the site root and fix or remove the auto_prepend_file line that points to the old server path. Then set up the Wordfence firewall again.
Why it happens: The Wordfence firewall loads itself before WordPress through auto_prepend_file, using an absolute path. On a new server, that old path doesn’t exist and every page fails.
- Open
.user.iniin the site root and findauto_prepend_file. - Remove the line, or update it to the new full path.
- Check
.htaccessfor a matchingphp_value auto_prepend_fileblock and remove it. - Wait 5 minutes for PHP to reread
.user.ini, then reload. - In Wordfence → Firewall, run “Optimize the Wordfence Firewall” again.
; .user.ini (remove or fix this line)
auto_prepend_file = '/home/olduser/public_html/wordfence-waf.php'Site broken on the new host: old file paths in config and database
Quick fix: Search for the old home path (for example /home/olduser/) in wp-config.php, .user.ini, .htaccess and the database, and replace it with the new one.
Why it happens: Cache plugins, security plugins, backup plugins and page builders store absolute server paths. They break when the account username or folder changes.
- Find the new path: it’s shown in cPanel’s sidebar or by
wp eval "echo ABSPATH;". - Search config files for the old path and update them.
- Run a dry run search and replace for the old path in the database, then the real one.
- Clear and reconfigure cache and security plugins so they rebuild their own config files.
wp search-replace '/home/olduser/public_html' '/home/newuser/public_html' --dry-runMigration plugin import stuck at a percentage or fails
Quick fix: Check the server error log at the moment it stops. It’s nearly always an upload limit, a timeout or disk space. For large sites, move files and the database manually or with WP-CLI.
Why it happens: Migration plugins run inside PHP requests, so they hit the same upload, memory, time and disk limits as everything else.
- Check free disk space on the new host: you need room for the archive and the extracted site.
- Raise
upload_max_filesize,post_max_sizeandmax_execution_time. - Exclude old backups, caches and logs from the export to shrink it.
- For big sites, copy files over SFTP or with
rsync, import the database with WP-CLI, then runsearch-replace.
cPanel cron job doesn’t run, or floods your inbox with emails
Quick fix: Use the full path to PHP or WP-CLI in the command, and end it with >/dev/null 2>&1 to stop the emails.
Why it happens: Cron runs with a minimal environment, so php or wp may not be found. Every line of output is emailed to the cron address.
- Find the PHP path in your host’s docs (commonly
/usr/local/bin/phpon cPanel). - Use the full path in the cron command, as below.
- Clear the Cron Email field or add the output redirect.
- For WordPress scheduled posts, see missed schedule.
*/5 * * * * /usr/local/bin/php /home/USER/public_html/wp-cron.php >/dev/null 2>&109A server checklist that prevents most of these errors
- Know your stack: PHP version, database version, web server and limits, written down for every site.
- One place for PHP settings: use the host’s PHP tool or
.user.ini, not a mix. - Watch disk and inodes: keep backups off the server and cap local copies.
- Lower DNS TTL before moves and copy every record, including mail.
- Check paths after migrations:
.user.ini,.htaccess, cache and security plugin configs. - Test PHP upgrades on staging with the same extensions as production.
We run these checks for agencies on every site we look after. See our white label care plans, or our migration service if you’re moving hosts.
More fixes

Moving a Divi site to a new host or domain: 10 errors and fixes
Fix the 10 most common errors after moving a Divi site to a new host or domain, from unstyled pages and old…

WordPress errors: the complete fix guide (47 errors, step by step)
The 47 WordPress errors we fix most, with the exact error text, why each one happens and the steps we use to…
10FAQ
How do I check which PHP version my WordPress site uses?
In WordPress go to Tools → Site Health → Info → Server. In cPanel, check MultiPHP Manager or Select PHP Version. Site Health shows the version actually running.
Where is the error log in cPanel?
Open Metrics → Errors for recent web server errors, or look for an error_log file in the site folder and in wp-admin. Many hosts also show logs in their own dashboard.
Why do my php.ini changes not work?
PHP caches .user.ini for 5 minutes by default, the file may be in the wrong folder, or your host only accepts changes through its PHP options screen.
What does 508 Resource Limit Is Reached mean?
Your account used all the CPU, memory or entry processes its plan allows on a CloudLinux server. Caching, blocking bad bots and moving heavy jobs help. If normal traffic causes it, upgrade the plan.
How do I fix email after moving my website to a new host?
Copy the MX, SPF, DKIM and DMARC records from the old DNS zone to the new one. Changing nameservers replaces all records, including mail.
Is it safe to set WordPress folders to 777?
No. Use 755 for folders and 644 for files. Many servers refuse to run PHP from world-writable files, and 777 makes it easier for malware to spread.

