WordPress is the most widely used CMS on the internet, which means its error messages are among the most searched phrases in web development. This guide covers the most common WordPress errors, what causes each one, and how to fix them. For errors with dedicated in-depth guides, links are provided for the complete troubleshooting walkthrough.
1. Error establishing a database connection#
What it means: WordPress cannot connect to the MySQL database. Nothing loads – you see a blank page with this message instead of your site.
Most common causes:
- Wrong database credentials in wp-config.php
- MySQL service is not running
- Corrupted database tables
- Too many simultaneous connections exhausting the MySQL connection limit
Quick fix: Open wp-config.php and verify DB_NAME, DB_USER, DB_PASSWORD, and DB_HOST match what your hosting provider shows for your database. If credentials are correct, the database may need repair. Run via WP-CLI:
wp db repair
wp db check
If MySQL is not running, contact your hosting provider. On shared hosting you cannot restart MySQL yourself.
See the full guide: Error establishing a database connection in WordPress: how to fix it
2. Internal server error (500)#
What it means: Something went wrong on the server but WordPress cannot be more specific. The cause is almost always a PHP fatal error, a corrupted .htaccess file, or a memory limit being hit.
Quick fix: Enable debugging in wp-config.php to see the real error:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Then check wp-content/debug.log. Common causes once you see the real error:
- Plugin conflict: Deactivate all plugins via FTP (rename the plugins folder) and reactivate one by one
- Corrupted .htaccess: Delete it via FTP and regenerate it by going to Settings > Permalinks and clicking Save
- Memory limit: Increase PHP memory in Hosting > PHP Manager (on Hostney) or by adding
define('WP_MEMORY_LIMIT', '256M');to wp-config.php
See the full guide: WordPress 500 internal server error: what it means and how to fix it
3. This site is experiencing technical difficulties#
What it means: Introduced in WordPress 5.2, this message replaces the white screen of death when WordPress detects a fatal error. WordPress sends a recovery email to the admin address.
Quick fix: Check your admin email for the recovery link WordPress sent. Click it to access a special recovery mode that lets you deactivate plugins. If no email arrived, connect via SFTP and rename wp-content/plugins to wp-content/plugins-disabled to deactivate all plugins at once.
4. White screen of death#
What it means: A completely blank white page with no error message. Almost always a PHP fatal error or memory exhaustion, but WordPress is configured to hide errors from visitors.
Quick fix: Same as the internal server error – enable WP_DEBUG, check the debug log, deactivate plugins, check memory limits. The white screen and the 500 error have identical causes – only the display differs.
See the full guide: White Screen of Death Error in WordPress
5. Syntax error (parse error)#
What it means: You or a plugin edited a PHP file and introduced invalid syntax. PHP cannot parse the file and stops completely. The error message shows the file and line number.
Quick fix: Connect via SFTP and edit the file mentioned in the error. Look for the line number shown. Common mistakes: missing semicolon, unclosed quote, extra bracket. If you recently edited wp-config.php, functions.php, or any plugin file, restore it from your backup or the original.
Never edit PHP files through the WordPress theme/plugin editor for exactly this reason. If you must, always have an SFTP connection open as a safety net.
6. WordPress posts returning 404 error#
What it means: Your posts and pages return 404 errors even though they exist in the database. The homepage loads but individual post URLs do not.
Quick fix: Go to Settings > Permalinks and click Save Changes without changing anything. This regenerates the rewrite rules. If that does not work, check that your web server is configured to pass requests to index.php. On Nginx, the try_files directive must be present. On Apache, mod_rewrite must be enabled and .htaccess must be readable.
See the full guide: How to Fix 404 Errors in Nginx
7. PHP memory exhausted error#
What it means: WordPress has consumed all the PHP memory allocated to it. The error looks like:
Fatal error: Allowed memory size of X bytes exhausted
.
Quick fix: Increase the PHP memory limit. In wp-config.php:
define('WP_MEMORY_LIMIT', '256M');
On Hostney, go to Hosting > PHP Manager > Variables and increase the memory_limit value. 256M is a reasonable default for most WordPress sites. WooCommerce stores may need 512M.
8. Locked out of WordPress admin#
What it means: You cannot access wp-admin. This can happen because of a forgotten password, a plugin conflict that breaks the login page, a security plugin blocking your IP, or an attacker changing your credentials.
Quick fix depends on the cause:
- Forgotten password: Use the “Lost your password?” link, or reset via WP-CLI:
wp user update admin --user_pass=newpassword - Plugin conflict: Rename the plugins folder via SFTP to deactivate all plugins
- IP blocked: Check your security plugin’s blocked IPs list via direct database query, or contact your hosting provider
- Credentials changed by attacker: Update via WP-CLI or direct database:
UPDATE wp_users SET user_pass = MD5('newpassword') WHERE user_login = 'admin';
9. WordPress login page refreshing and redirecting#
What it means: You enter your credentials, the page refreshes, and you are back at the login screen without logging in. No error message. Almost always a cookie or URL mismatch issue.
Quick fix: Check that WordPress Address and Site Address in Settings > General are identical and match the URL you are actually using. A mismatch between http and https or between www and non-www causes this. Also clear your browser cookies for the domain. If the problem appeared after moving the site, update siteurl and home in the database.
10. WordPress not sending email#
What it means: Order confirmations, password resets, and contact form notifications are not arriving. This is the default PHP mail() function failing, not a WordPress issue.
Quick fix: Install WP Mail SMTP, configure it with a real SMTP service (SendGrid, Mailgun, Gmail), and test delivery. Also check spam folders – the emails may be sending but being filtered. Verify SPF and DKIM records are set up for your domain.
See the full guide: WooCommerce Not Sending Emails: How to Fix It
11. Image upload issues#
What it means: Images fail to upload through the WordPress media library. Common errors: “Upload: Failed to write file to disk”, “The uploaded file could not be moved to wp-content/uploads”, or the upload completes but the file does not appear.
Quick fix: Check file permissions on wp-content/uploads. The directory needs to be writable by the web server user:
chmod 755 wp-content/uploads
If the uploads directory does not exist, create it. If uploads work but images do not display, the file URL may be wrong – check Settings > Media for the upload path.
See the full guide: The Uploaded File Could Not Be Moved to wp-content/uploads
12. "Are you sure you want to do this" error#
What it means: A nonce verification failure. WordPress uses nonces (number used once) to verify that form submissions come from legitimate sources. This error means the nonce check failed, usually because of a caching issue or a plugin conflict.
Quick fix: Clear all caches – page cache, object cache, and browser cache. If you use a caching plugin, clear it completely. If the error persists, a plugin is generating forms with stale nonces. Try deactivating plugins one by one.
13. Briefly unavailable for scheduled maintenance#
What it means: WordPress creates a .maintenance file in the root directory during updates and deletes it when done. If an update fails or is interrupted, the file is left behind and this message appears indefinitely.
Quick fix: Connect via SFTP and delete the .maintenance file from your WordPress root directory. The site will immediately become accessible.
14. 403 forbidden error in WordPress#
What it means: The server understood the request but is refusing it. On WordPress sites this is almost always a security plugin, a ModSecurity WAF rule, a file permission problem, or a hotlinking protection rule in .htaccess.
Quick fix: Check your security plugin’s settings for blocked IPs or blocked requests. Check ModSecurity logs for triggered rules. Verify file permissions are 644 for files and 755 for directories. If the error appeared after an .htaccess change, restore the previous version.
15. Too many redirects error#
What it means: The browser detects a redirect loop – page A redirects to page B which redirects back to page A, repeating infinitely.
Quick fix: Usually caused by WordPress Address and Site Address being misconfigured (http vs https mismatch), a CDN or reverse proxy not being accounted for in WordPress settings, or conflicting redirect rules in .htaccess. Check Settings > General first. If you recently added HTTPS, add these lines to wp-config.php:
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
$_SERVER['HTTPS'] = 'on';
}
16. Mixed content error#
What it means: Your site is served over HTTPS but some resources (images, scripts, stylesheets) are loaded over HTTP. Browsers block or warn about this.
Quick fix: Run a search and replace on the database to update all HTTP URLs to HTTPS:
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables
Also check theme files and plugin settings for hardcoded HTTP URLs that are not in the database.
17. 502 bad gateway error#
What it means: The web server received an invalid response from an upstream server – usually PHP-FPM. Similar to 503 and 504 but indicates the upstream sent a bad response rather than no response.
Quick fix: Usually a PHP-FPM crash or resource exhaustion. Check your PHP error log and Nginx error log. Deactivate recently updated plugins. If the error is widespread across the site, contact your hosting provider – PHP-FPM may need to be restarted.
18. 503 service unavailable error#
What it means: PHP-FPM cannot accept new requests. Either all PHP workers are occupied (pool exhaustion) or PHP-FPM has crashed.
Quick fix: Enable full-page caching to reduce PHP worker load. Check for bot traffic hammering PHP endpoints. If under active attack, contact your hosting provider to enable lockdown mode or adjust PHP-FPM pool settings.
See the full guide: 503 Service Temporarily Unavailable in Nginx
19. 504 gateway timeout error#
What it means: PHP-FPM accepted the connection but did not respond in time. A PHP script is running too slowly – usually a slow database query, an external API call hanging, or a resource-intensive operation.
Quick fix: Enable Query Monitor to identify slow queries. Check if the timeout correlates with a specific page, plugin action, or external API call. Optimize the slow operation rather than increasing the timeout.
See the full guide: 504 Gateway Timeout in Nginx: Causes and How to Fix It
20. 413 request entity too large#
What it means: The file you are trying to upload exceeds the server’s configured limit.
Quick fix: On Hostney, go to Hosting > PHP Manager > Variables and increase upload_max_filesize and post_max_size. The Nginx client_max_body_size limit may also need increasing – contact support for this.
See the full guide: 413 Request Entity Too Large in Nginx: How to Fix It
21. Fatal error: maximum execution time exceeded#
What it means: A PHP script ran longer than the max_execution_time limit allows. Common during imports, exports, or resource-intensive plugin operations.
Quick fix: On Hostney, increase max_execution_time in Hosting > PHP Manager > Variables. For imports specifically, use WP-CLI instead of the browser – WP-CLI has no web timeout:
wp import file.xml --authors=create
22. WordPress keeps logging out#
What it means: Your WordPress session expires immediately or very quickly after logging in. Usually a cookie configuration issue.
Quick fix: Verify that COOKIE_DOMAIN and COOKIEPATH are not set to wrong values in wp-config.php. Check that the site URL does not have a trailing slash inconsistency. If you are behind a proxy, ensure HTTPS is being detected correctly. Regenerate authentication keys and salts in wp-config.php using the WordPress secret key generator.
23. "Your connection is not private" / secure connection error#
What it means: The browser cannot verify the SSL certificate. The certificate may be expired, self-signed, have an incomplete chain, or not cover the domain being visited.
Quick fix: Check the certificate using SiteProbe’s SSL checker to see exactly what is wrong. On Hostney, certificates renew automatically – if this error appears, contact support as automatic renewal may have failed.
See the full guide: ERR_SSL_PROTOCOL_ERROR: What It Means and How to Fix It and How to Install an SSL Certificate
24. "There has been a critical error on this website"#
What it means: Same as “This Site is Experiencing Technical Difficulties” – a PHP fatal error WordPress detected and handled gracefully. Check the admin email for a recovery link.
Quick fix: Use the recovery link in the email, or connect via SFTP and rename the plugins folder to deactivate all plugins. Check wp-content/debug.log if WP_DEBUG_LOG is enabled.
25. WordPress failed to open stream error#
What it means: PHP cannot open a file or URL it needs. Full error typically includes the file path and reason: “failed to open stream: No such file or directory” or “failed to open stream: Permission denied”.
Quick fix: Check the file path in the error message. If “No such file or directory” – the file is missing, likely a plugin file that was not fully installed. If “Permission denied” – fix file permissions so PHP can read the file.
26. 429 too many requests#
What it means: A rate limit has been hit. Either a server-level rate limit or an API rate limit from a third-party service your plugin uses.
Quick fix: If coming from the server, reduce request frequency or contact your hosting provider about rate limit settings. If coming from a third-party API (Stripe, Google Maps, etc.), check the API’s rate limit documentation and optimize how your site makes those calls.
27. Destination folder already exists#
What it means: You are trying to install or update a plugin or theme but a folder with that name already exists in the plugins or themes directory. Usually from a previous incomplete installation.
Quick fix: Connect via SFTP, navigate to wp-content/plugins or wp-content/themes, and delete the folder with the same name as the plugin or theme you are trying to install. Then retry the installation.
28. "Another update in process" error#
What it means: WordPress locked the update process by creating a .maintenance file and the lock was not released when the update finished or failed.
Quick fix: Delete the .maintenance file from your WordPress root directory via SFTP. If the update was incomplete, check that all plugin and core files are intact.
29. "Missing a temporary folder" error#
What it means: PHP cannot find or create a temporary directory for file uploads. The sys_temp_dir setting is misconfigured or the temporary directory does not exist or is not writable.
Quick fix: On Hostney, the temporary directory is managed automatically. If you see this error, contact support. On self-managed servers, check the sys_temp_dir value in php.ini and ensure the directory exists and is writable.
30. File and folder permissions error#
What it means: WordPress cannot read or write files because the permissions are too restrictive (or too permissive – some security plugins flag world-writable files).
Quick fix: Correct permissions via SSH:
find /path/to/wordpress -type d -exec chmod 755 {} \;
find /path/to/wordpress -type f -exec chmod 644 {} \;
chmod 640 wp-config.php
See the full guide: Linux File Permissions: chmod and chown Explained
31. "Sorry, this file type is not permitted" error#
What it means: WordPress blocked an upload because the file type is not in its allowed list.
Quick fix: For legitimate file types, add them to the allowed list by adding this to functions.php:
function add_allowed_mime_types($mimes) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
add_filter('upload_mimes', 'add_allowed_mime_types');
Replace svg with the file type you need. Never add executable file types (.php, .exe, .sh) – this is a security risk.
32. "Updating failed" or "Publishing failed" error#
What it means: The block editor (Gutenberg) cannot save your post. Usually a REST API conflict, a security plugin blocking the REST API, or a cookie/nonce issue.
Quick fix: Check if the WordPress REST API is accessible – go to yourdomain.com/wp-json/ and see if it returns JSON. If you get a 403 or redirect, a security plugin or .htaccess rule is blocking it. The REST API must be accessible for the block editor to save posts.
33. 401 unauthorized error#
What it means: Authentication is required and the credentials provided are not valid or no credentials were provided.
Quick fix: On a WordPress admin page, this usually means a password protection layer (basic auth) has been added to wp-admin at the server level. Check with your hosting provider. On API endpoints, check that authentication headers are correct.
34. "The link you followed has expired" error#
What it means: A nonce in a URL or form has expired. WordPress nonces are valid for a limited time. This often happens with plugin update links, file upload links, or admin action links that were generated a long time ago.
Quick fix: Refresh the page and try the action again with a fresh link. If it happens consistently, it may indicate a clock skew between servers or an issue with PHP session handling.
35. ERR_NAME_NOT_RESOLVED#
What it means: The browser cannot resolve the domain name to an IP address. DNS is not working for this domain.
Quick fix: Check if the domain’s DNS records exist using SiteProbe’s DNS lookup. If records are missing, the domain may have expired or DNS records were deleted. If records exist, try flushing your local DNS cache.
See the full guide: DNS Server Not Responding: What It Means and How to Fix It
36. DNS_PROBE_FINISHED_NXDOMAIN#
What it means: DNS is working but the domain does not exist in DNS. Either the domain expired, nameservers are misconfigured, or DNS records were not created.
Quick fix: Check your domain registration is current and nameservers point to your hosting provider. Verify DNS records exist at your DNS provider. Propagation can take up to 48 hours after changes.
See the full guide: dns_probe_finished_bad_config: What It Means and How to Fix It
37. ERR_CONNECTION_REFUSED#
What it means: The browser reached the server but nothing is listening on port 80 or 443. The web server is not running or is configured to listen on a different address.
Quick fix: Check that your web server (Nginx or Apache) is running. On a VPS:
sudo systemctl status nginx
. On managed hosting, contact support if the site is completely unreachable.
38. ERR_CONNECTION_RESET#
What it means: The connection was established and then immediately terminated. Usually a firewall, security plugin, or proxy dropping the connection mid-request.
Quick fix: Check if a security plugin or WAF rule is blocking your IP. Try from a different network or device. Check Nginx error logs for connection reset events.
39. Missed schedule post error#
What it means: WordPress tried to publish a scheduled post but the wp-cron.php process did not run at the scheduled time.
Quick fix: The most reliable solution is to disable the built-in wp-cron and use a real system cron instead:
In wp-config.php:
define('DISABLE_WP_CRON', true);
Then add a system cron to run WP-CLI:
*/5 * * * * wp --path=/path/to/wordpress cron event run --due-now
See the full guide: How to Run a WP-CLI Command with Cron
40. cURL error 28: connection timed out#
What it means: A PHP process tried to make an HTTP request to an external service and waited too long for a response. The external service is slow or unreachable.
Quick fix: Identify which plugin or function is making the external request (check your error log for which file triggered the error). Add a timeout to the request so it fails fast instead of hanging. If the external service is legitimately down, the error will resolve when it comes back up.
41. "Cookies are blocked due to unexpected output"#
What it means: WordPress tries to set cookies during login but output was already sent before the headers – usually a PHP warning, whitespace, or BOM character before the opening
<?php
tag in a file.
Quick fix: Check for extra whitespace or characters before
<?php
in wp-config.php, functions.php, or any recently edited file. Enable WP_DEBUG to find the source of the premature output.
42. "Sorry, you are not allowed to access this page"#
What it means: The currently logged-in user does not have permission to access the requested admin page.
Quick fix: If this appears for an admin account, the user role may have been changed or capabilities removed. Check the user’s role in Users > All Users. If the role is correct but capabilities are missing, a plugin may have corrupted user capabilities. Reset them via WP-CLI:
wp cap add administrator manage_options
43. "Upload: failed to write file to disk"#
What it means: PHP wrote the uploaded file to the temporary directory but could not move it to wp-content/uploads. Usually a permissions issue on the uploads directory or the temp directory.
Quick fix: Ensure wp-content/uploads exists and is writable. Check that the disk is not full:
df -h
If the disk is full, delete unnecessary files or upgrade your hosting plan.
44. HTTP image upload error#
What it means: Image uploads fail with a generic HTTP error. Usually caused by a PHP memory limit being hit while processing the image, a server timeout, or a conflict with a security plugin inspecting uploads.
Quick fix: Increase PHP memory limit and max execution time. Try uploading a smaller image to confirm it is a size/memory issue. Temporarily disable security plugins to test if WAF rules are blocking the upload.
45. 414 request-URI too long#
What it means: The URL in the request is longer than the server allows. Rarely a real-world problem for regular users but can appear with very long query strings or misconfigured applications.
Quick fix: The URL needs to be shortened, or the server limit needs to be increased. If this appears for normal site functionality, check if a plugin is generating extremely long URLs.
46. Pluggable.php file errors#
What it means: An error in pluggable.php usually means a plugin or theme is calling a WordPress function before it is available, or two plugins are trying to define the same function.
Quick fix: The error message will indicate which function is being redefined. Deactivate plugins one by one to identify the conflict. The problem is almost always a plugin trying to redefine a function that WordPress core or another plugin already defined.
47. Password reset key error#
What it means: The password reset link has expired, already been used, or was generated for a different user.
Quick fix: Request a new password reset email. If emails are not arriving, configure SMTP as described in the email section above. If the problem persists, a security plugin may be blocking password reset functionality.
48. WordPress website not updating right away#
What it means: You made a change but visitors (or you) still see the old version. A caching layer is serving stale content.
Quick fix: Clear all caches: your WordPress caching plugin, any server-level cache (FastCGI cache on Nginx), CDN cache if you use one, and browser cache (Ctrl+Shift+R for a hard refresh). On Hostney, caching settings are in the control panel under Caching.
49. "Failed to load resource" error#
What it means: A browser console error indicating a CSS, JavaScript, image, or font file failed to load. Usually a 404 (file missing), a mixed content error (HTTP resource on HTTPS page), or a CORS issue.
Quick fix: Open browser developer tools, go to the Network tab, and find the failing resource. The response code tells you what is wrong: 404 means the file is missing, CORS error means a cross-origin policy is blocking it, mixed content means the URL uses HTTP on an HTTPS page.
50. "Googlebot cannot access CSS and JS files" error#
What it means: Your robots.txt file is blocking Googlebot from accessing the CSS and JavaScript files WordPress needs to render pages. Google cannot see your site the way users do.
Quick fix: Check your robots.txt file for rules that block /wp-content/ or /wp-includes/. Remove any rules blocking these directories. WordPress’s default robots.txt does not block these directories – the problem is usually a plugin that added overly aggressive rules.
51. "This site can't be reached"#
What it means: The browser cannot establish any connection to the server. Different from a 500 error – this happens before any HTTP response. The server is unreachable, the domain does not resolve, or a firewall is blocking the connection.
Quick fix: Check if the domain resolves with SiteProbe’s DNS lookup. If DNS is fine, check if the server is responding on another device or network. If it is only unreachable from your network, your IP may be blocked by the server’s firewall.
52. "There has been a critical error" with specific plugin#
What it means: WordPress 5.2+ catches fatal errors and shows a recoverable error page. The recovery email will tell you which plugin caused it.
Quick fix: Use the recovery link in the admin email, deactivate the problematic plugin, and update it or find an alternative.
53. WordPress admin-ajax.php 400 bad request#
What it means: An AJAX request to wp-admin/admin-ajax.php returned a 400 error. Usually a nonce mismatch, incorrect parameters, or a WAF rule blocking the request body.
Quick fix: Clear all caches (nonce mismatch). Check if a ModSecurity rule is blocking requests to admin-ajax.php. If the error appears after a caching plugin was installed, configure the plugin to exclude admin-ajax.php from caching.
Summary#
Most WordPress errors fall into a handful of categories:
- Database errors (error establishing connection, tables corrupted) – check credentials, repair database, ensure MySQL is running
- PHP errors (500, white screen, fatal errors) – enable WP_DEBUG, check error log, identify the problematic plugin
- Permission errors (403, file upload failures) – check file/directory permissions, verify web server user can read/write as needed
- Caching issues (login loops, content not updating, nonce errors) – clear all cache layers
- Configuration mismatches (too many redirects, SSL errors, mixed content) – verify URL settings in WordPress and server configuration match
- Resource limits (memory exhausted, execution timeout, 413) – increase PHP memory/execution limits, optimize the operation causing the limit
For errors not on this list, enabling WP_DEBUG and checking the error log is almost always the first step. The log tells you exactly what failed, in which file, and on which line – which narrows down the cause to a specific plugin, theme, or configuration problem.