Understand WordPress Errors: A Troubleshooting Guide for Pressable Sites

Last modified: March 12, 2026

Ask Your Favorite AI

Copy the link to a markdown format of this article for ChatGPT, Claude, Gemini, or your favorite AI.

Every WordPress site will throw an error eventually. Some are minor inconveniences; others bring your site down entirely. The difference between a five-minute fix and a two-hour spiral usually comes down to knowing what you’re looking at before you start pulling things apart.

This guide covers the most common WordPress errors you’re likely to encounter on a Pressable-hosted site, organized by type so you can jump to what’s relevant. Where a Pressable-specific consideration applies, you’ll find it called out directly.

A Note on the Modern WordPress Ecosystem

WordPress rarely runs in isolation. A typical site pulls in data from payment gateways, shipping APIs, email services, image optimization tools, analytics platforms, and more.

This means that an error on your site is not always caused by something on your site. A timeout, a failed request, or a slow response can originate from a third-party service your site depends on and surface in a way that looks like a local problem. Throughout this guide, we’ll flag where an external service is a realistic culprit so that you know to look upstream, not just inward, when standard troubleshooting doesn’t turn anything up.

How Pressable’s Platform Affects Troubleshooting

Pressable runs on a managed NGINX infrastructure with fixed server and PHP configurations. This affects how you troubleshoot certain errors:

  • PHP settings are fixed. Values like upload_max_filesize, max_execution_time, and memory_limit are set at the platform level and cannot be changed via php.ini or wp-config.php overrides. See PHP Info & Limitations on Pressable for current values.
  • Caching is managed at the platform level. Pressable uses object-cache.php and advanced-cache.php for its own caching layers (Batcache for pages, Memcache for object/query caching). These files are symlinked into every site as read-only, which means third-party caching plugins cannot use them. Plugins like W3 Total Cache or WP Super Cache will not function as expected on Pressable and may actually degrade performance. See Caching Types Available in Pressable for more detail.
  • PHP workers handle concurrency. Each site has a pool of PHP workers that process requests. Most current Pressable plans include 5 workers by default, each with 512 MB of dedicated RAM. Understanding worker limits is important context for several errors in this guide. See PHP Workers, Concurrency, and What They Mean for Your Site.

Before You Do Anything Else

When an error appears and you’re not sure where to start, run through these steps first. They resolve a surprising percentage of issues and cost very little time.

  1. Hard refresh the page (Ctrl+Shift+R / Cmd+Shift+R) to rule out a browser cache issue.
  2. Deactivate all plugins via the site’s Pressable control panel, SFTP, or SSH/WP-CLI if you can’t access the admin. Reactivate one at a time to isolate a conflict. We strongly recommend running this test on a clone rather than a live site. See How to Test for Theme and Plugin Conflicts.
  3. Switch to a default theme (Twenty Twenty-Four or similar) to rule out a theme issue.
  4. Check your error logs. In the Pressable dashboard, navigate to your site and look under the Logs section. PHP errors and fatal crashes will appear here.
  5. Enable WP_DEBUG temporarily. See our guide to debug.log for details on how. Remove or disable the code in wp-config.php when you’re done as it can interfere with our default PHP error logging.
  6. Check whether the issue is intermittent. Errors that come and go, or that appear only during specific actions like checkout or form submission, are more likely to involve an external service or resource contention.

Part 1: HTTP Client Errors (4xx)

4xx errors indicate that something went wrong on the request side before your server fully processed it. They range from genuinely harmless (a mistyped URL) to consequential (a blocked admin user).

400 Bad Request

The 400 error is a catch-all: the server received the request but couldn’t process it due to something malformed in the request itself. Common causes include a corrupted cookie, a URL with invalid characters, or a browser sending unexpected data.

What to try:

  • Clear your browser cookies and cache for the affected site.
  • Try the request in a private/incognito window or a different browser.
  • If a form or API endpoint is triggering the error, check whether the submitted data contains special characters or unexpected formatting.

401 Unauthorized

A 401 means the request requires authentication that wasn’t provided or wasn’t accepted. On WordPress sites, this typically surfaces with HTTP Basic Authentication (common on staging sites) or when a membership plugin or REST API endpoint requires a logged-in or credentialed user.

What to try:

  • If your site uses Pressable’s Basic Authentication feature, confirm you’re entering the correct credentials.
  • If the 401 is appearing on a REST API endpoint, check whether the relevant plugin requires authentication tokens or nonces.
  • For membership or LMS sites, verify the user’s role and whether the content they’re accessing is restricted correctly.

403 Forbidden

A 403 means the server understood the request but is refusing to fulfill it. On WordPress, this is almost always a file permissions issue or a security rule blocking access.

What to try:

  • Correct WordPress file permissions are 755 for directories and 644 for files. Verify these via SFTP. See Setup and Use SFTP to Connect to Your WordPress Site.
  • If the 403 appeared after installing a security plugin, check whether it has added restrictive rules.
  • A 403 on wp-login.php specifically may indicate a bot protection or brute-force rule is triggering; check your security plugin’s logs.
  • Verify that your CDN or any active firewall (Cloudflare, etc.) isn’t blocking the request at the edge.

404 Not Found

A 404 means the requested resource doesn’t exist at the given URL. This is usually harmless in isolation but becomes a usability and SEO problem at scale.

What to try:

  • If the 404 appeared after a site migration or URL structure change, set up proper 301 redirects. A plugin like Redirection handles this well.
  • Navigate to Settings โ†’  Permalinks in the WordPress admin and click Save Changes (without changing anything) to flush rewrite rules. This resolves many unexpected 404s on valid URLs.
  • Use a broken link checker plugin or an online tool to audit your site for dead links periodically. Please note that these types of plugins can be extremely resource-intensive, so should only be run at the lowest traffic time of day on your site.

405 Method Not Allowed

A 405 means the server received a valid request but rejected the HTTP method used (GET, POST, PUT, etc.). This is common when a form or API endpoint is misconfigured, or when a plugin sends a request using an unexpected method.

What to try:

  • If this appeared after a plugin or theme update, try rolling back the update.
  • Check whether a REST API endpoint or form plugin is sending requests to the correct URL with the expected method.
  • Review your NGINX configuration expectations; on Pressable, NGINX configurations are fixed, so if a plugin requires a non-standard method override, this may need to be handled at the application level.

408 Request Timeout

A 408 means the server timed out waiting for the client (browser) to send a complete request. This is less common than server-side timeouts but does occur with slow connections, very large file uploads, or network interruptions mid-request.

What to try:

  • Test on a faster or more stable network connection.
  • If the error occurs during file upload, try a smaller file first to confirm whether file size is the issue.
  • Check whether the action triggering the 408 involves a plugin that makes external API calls.

413 Request Entity Too Large

A 413 means the request payload exceeded the server’s configured limit. On WordPress sites, this is most common when uploading files through the media library or a form.

What to try:

  • Check the maximum upload size shown at Media โ†’ย  Add New. On Pressable, this value is set at the platform level and cannot be increased via php.ini. See PHP Info & Limitations on Pressable for the current limit.
  • For files that exceed the upload limit, consider uploading them directly via SFTP to the appropriate wp-content/uploads directory and then importing them into the media library using a plugin like Media Sync.
  • If a contact form or submission is triggering the error, check whether the form allows file attachments and whether the attachment size limit is set appropriately.

429 Too Many Requests

A 429 means the server or an upstream service has decided a particular IP address or user is sending too many requests in too short a time. This is a rate-limiting response, intended to prevent abuse.

What to try:

  • If the 429 is appearing on wp-login.php, a security plugin may be rate-limiting login attempts. This is expected behavior; verify whether a legitimate user is being blocked.
  • For API-related 429s, check the plugin’s settings for request throttling or batching options.
  • See Understanding 429 Errors in the Pressable Knowledge Base for platform-specific context.

Part 2: HTTP Server Errors (5xx)

5xx errors indicate that the server encountered a problem processing a request it received. They tend to be more disruptive than 4xx errors, and some (500, 502, 504) can affect your search engine rankings if they persist. Resolving them quickly matters.

500 Internal Server Error

The 500 is the most generic server error: something went wrong, but the server can’t be more specific. It covers everything from a PHP syntax error to a misconfigured plugin to an exhausted memory limit.

What to try:

  • Check your error logs in the Pressable dashboard first. A 500 almost always leaves a trace there.
  • Enable WP_DEBUG and WP_DEBUG_LOG in wp-config.php to capture the specific PHP error. Be sure to remove this code when you’re done as it can interfere with Pressable’s default PHP error logging.
  • Deactivate all plugins via SFTP and reload. If the 500 clears, reactivate plugins one at a time. It is highly recommended to run this test on a clone rather than the live site.
  • Switch to a default theme to rule out a theme-level error.
  • Check whether a recent update preceded the error.

502 Bad Gateway

A 502 means a server acting as a gateway or proxy received an invalid response from an upstream server. On Pressable, this typically involves NGINX receiving an unexpected or malformed response from PHP-FPM.

What to try:

  • Reload the page; a transient 502 can be a brief server hiccup.
  • Deactivate plugins to identify whether one is causing a processing failure. It is highly recommended to run this test on a clone rather than the live site.
  • Check whether a CDN or proxy layer (Cloudflare, etc.) is involved and whether the error is originating at the edge or at origin.
  • Review error logs for PHP fatal errors that may be causing PHP-FPM to return a bad response.

503 Service Unavailable

A 503 means the server is temporarily unable to handle the request. It does not necessarily mean the server is down; it often means it is overloaded or in maintenance mode.

What to try:

504 Gateway Timeout

A 504 means the gateway (NGINX) timed out waiting for an upstream server (PHP-FPM) to respond. Unlike a 502, which is a bad response, a 504 is no response within the allowed time.

What to try:

  • Check error logs for the specific script or plugin responsible for the timeout.
  • The maximum execution time on Pressable is set at the platform level (see PHP Info & Limitations on Pressable). If a plugin legitimately requires longer execution, the operation may need to be broken into smaller chunks or moved to a background process using something like Action Scheduler.
  • Disable plugins that make external API calls and test whether the timeout resolves.
  • Check the status of any third-party services your site uses during the action that triggers the error.

Cloudflare Errors (521, 522, 524)

These errors are specific to sites using Cloudflare as a proxy and indicate a problem between Cloudflare’s edge and your origin server. By definition, they involve at least one external layer.

What to try:

Part 3: WordPress Application Errors

These errors originate in WordPress itself or in the PHP layer that runs it. They are usually more specific than HTTP errors and often leave clearer traces in the logs.

White Screen of Death (WSOD)

The WSOD is exactly what it sounds like: a completely blank white page with no error message. It happens when PHP encounters a fatal error but error display is turned off, leaving the browser with nothing to render.

What to try:

“There Has Been a Critical Error on Your Site”

Introduced in WordPress 5.2, this message replaced the raw WSOD for most fatal PHP errors. WordPress detects the fatal error, sends an email to the admin address on file, and displays this friendlier message to visitors. You may also see a link to enter recovery mode.

What to try:

  • Check the admin email associated with your WordPress install for a recovery mode link. This allows you to access the admin temporarily even while the site is in an error state.
  • Check your error logs in the Pressable dashboard or in /tmp for the specific PHP error.
  • Deactivate all plugins, then reactivate one at a time.
  • If a theme is responsible, switch to a default theme from the siteโ€™s Pressable control panel or via SFTP.

Fatal Error: Allowed Memory Size Exhausted

This error appears when a PHP process tries to allocate more memory than the configured limit allows. The full message typically reads something like: Fatal error: Allowed memory size of X bytes exhausted.

What to try:

  • Identify which plugin or theme operation is triggering the error by reviewing PHP error logs in the site’s control panel. The error log will usually include a file path that points to the responsible code.
  • Memory-intensive operations like image regeneration, large data imports, or certain page builder renders are common triggers.
  • On Pressable, the PHP memory limit is set at the platform level and cannot be increased via wp-config.php. See PHP Info & Limitations on Pressable and How to Diagnose and Resolve Memory Exhaustion Errors at Pressable for options specific to this environment.
  • Consider whether the operation triggering the error can be broken into smaller batches or done via WP-CLI, which may have more headroom depending on the operation.

Fatal Error: Maximum Execution Time Exceeded

PHP enforces a time limit on how long any single script is allowed to run. When a script exceeds that limit, PHP terminates it and logs an error. The message typically reads: Fatal error: Maximum execution time of X seconds exceeded.

What to try:

  • Check the error log to identify which script exceeded the time limit.
  • On Pressable, the max_execution_time is fixed at the platform level. See PHP Info & Limitations on Pressable.
  • If the script is part of a plugin that calls an external API, check whether that service is responding normally.
  • For legitimate long-running operations (large imports, bulk processing), consider using WP-CLI or a plugin that uses background processing (Action Scheduler, WP Background Processing library) to handle the work in smaller chunks outside of a standard HTTP request. You can also try breaking the operation into smaller chunks.

“The Site Is Experiencing Technical Difficulties”

This is a variant of the critical error message, specifically displayed when WordPress’s fatal error handler catches a problem but cannot enter recovery mode. It often appears during failed updates.

This error is deprecated in modern WordPress and should never appear on a Pressable-hosted site, which will always be using the latest stable WordPress release. It is included here in the hopes it may help others who found this page while troubleshooting issues at a different host.

What to try:

  • Check for a .maintenance file in the WordPress root and remove it if the update has completed or failed.
  • Check error logs for the underlying PHP fatal error.
  • If this appeared during a plugin or core update, connect via SFTP and check whether the update files are in a partial or inconsistent state.
  • In the worst case, restore from a backup to the last known good state.

Syntax Errors

A PHP syntax error happens when code is malformed, usually because of a typo or a bad edit. The error message will typically include the file path and the line number where PHP encountered the error: Parse error: syntax error, unexpected token.

What to try:

  • Do not try to fix a syntax error by editing files in the WordPress admin editor. If the error is in an active file, you may not be able to access the admin at all.
  • Connect via SFTP, navigate to the file identified in the error, and correct the syntax. Common issues include missing semicolons, unclosed quotes, or mismatched brackets.
  • If you are not comfortable editing PHP directly, restore from a recent Pressable backup instead.

“Are You Sure You Want to Do This?” / Nonce Errors

As with “The Site Is Experiencing Technical Difficulties” you are unlikely to encounter this error on modern WordPress.

This message appears when WordPress cannot verify a security nonce (a one-time token used to validate form submissions and actions). It is WordPress’s way of saying the action could not be authenticated.

What to try:

  • Simply reloading the page and retrying the action resolves this in most cases. Nonces expire after a set time, so a long session or a cached page can cause this.
  • If the error appears consistently, check whether a caching plugin is serving a cached version of a page that includes a stale nonce. On Pressable, Batcache handles page caching; if a specific page or action is being incorrectly cached, it may need to be excluded. See How to Speed up Your Site with Pressable’s Caching.
  • Check for plugin conflicts, particularly with security plugins that may be interfering with nonce generation or validation.

Part 4: WordPress Admin and Dashboard Errors

These errors affect access to the WordPress admin area itself, which makes them particularly urgent since they can block your ability to troubleshoot anything else.

Can’t Log In to WordPress Admin

If your login credentials are correct but you still can’t get in, the issue is usually a redirect loop, a corrupted session, or a plugin interfering with the login process.

What to try:

“Sorry, You Are Not Allowed to Access This Page”

This message appears when a logged-in user tries to access something their user role doesn’t permit. It can also appear due to database corruption or a plugin that has incorrectly modified user capabilities.

What to try:

  • Verify the user’s role in Users โ†’ All Users and confirm it has appropriate permissions.
  • Check whether the wp_user_roles option in the database has been corrupted or modified by a plugin. You can inspect this via phpMyAdmin or WP-CLI: wp option get wp_user_roles.
  • Deactivate plugins that manage roles or capabilities to check for a conflict.
  • Verify that the database table prefix in wp-config.php matches the prefix used in your database.

WordPress Admin Is Blank or Broken

A blank or visually broken admin (missing styles, broken layout, non-functional menus) usually indicates a JavaScript conflict or a failed asset load.

What to try:

  • Open browser developer tools and check the Console and Network tabs for errors or failed requests.
  • Deactivate all plugins and check whether the admin renders correctly. We recommend running this test on a clone rather than the live site.
  • Try adding define('CONCATENATE_SCRIPTS', false); to wp-config.php to disable script concatenation, which can cause conflicts.
  • Check whether the issue is limited to one browser; a browser extension may be interfering.

Infinite Redirect Loop on Login

If attempting to log in sends you back to the login page repeatedly, a cookie or configuration issue is usually responsible.

What to try:

  • Clear all browser cookies for the site and try again.
  • Verify that siteurl and home in Settings โ†’ General (or in the wp_options table) both use the same protocol (both https:// or both http://). A mismatch here is the most common cause.
  • If you recently changed the site URL or migrated, confirm that all URL references have been updated correctly. While Pressable does run an automated search-replace any time a siteโ€™s primary domain is updated, it is possible that URL references in custom database tables may be missed. You can run a manual search-replace from the siteโ€™s control panel.
  • Deactivate security plugins via SFTP and test.

“Installation Failed: Could Not Create Directory”

This error appears when WordPress cannot write to the necessary directory during a plugin or theme installation or update. It is almost always a file permissions issue.

What to try:

  • Connect via SFTP and verify that the wp-content/plugins/ and wp-content/themes/ directories are writable.
  • Correct permissions for directories are 755. If permissions are set more restrictively than this, WordPress cannot create subdirectories.
  • Check whether there is sufficient disk space in the siteโ€™s container. A full disk can also prevent directory creation.

Automatic Update Failures

WordPress plugin, and theme updates are fetched from WordPress.org or a third-party marketplace during the update process. If the update fails, it can leave files in a partial state.

What to try:

  • Check whether the failure is consistent or intermittent. An intermittent failure is more likely to be a connectivity issue with the source server.
  • For plugin updates specifically, try updating via WP-CLI: wp plugin update plugin-name.
  • If files were partially overwritten, restore from a Pressable backup and reattempt the update once the source server is responding.
  • Pressable provides automatic managed updates for WordPress core. See How Does Pressable Deal with Updates? for details.

Part 5: File, Upload, and Media Errors

These errors center on WordPress’s ability to read from and write to the file system, and to process or retrieve media files.

Upload: Failed to Write File to Disk

This error appears when WordPress cannot save an uploaded file to the server. The most common cause is incorrect permissions on the uploads directory, but a full temporary directory can also trigger it.

What to try:

  • Via SFTP, check the permissions on wp-content/uploads/. The directory should be 755 and files within it 644.
  • If permissions look correct, the temporary directory used during upload may be full. This is a server-side condition; if clearing permissions doesn’t resolve it, reach out to Pressable support.
  • Verify that there is sufficient disk storage available in the siteโ€™s container.

“Sorry, This File Type Is Not Permitted for Security Reasons”

WordPress maintains an allowlist of permitted upload file types. Attempting to upload anything outside that list triggers this message.

What to try:

  • For SVG files specifically, a plugin like Safe SVG handles sanitization and adds SVG to the allowed types safely.
  • For other file types, you can extend the allowed mime types by adding a filter to your theme’s functions.php or a site-specific plugin:
add_filter('upload_mimes', function($mimes) {    $mimes['webp'] = 'image/webp';    return $mimes;});
  • Avoid using define('ALLOW_UNFILTERED_UPLOADS', true); in production; it removes the security check entirely.

Uploaded File Exceeds upload_max_filesize

When you navigate to Media โ†’ Add New, WordPress displays the maximum allowed upload size. Attempting to upload a file larger than this limit triggers an error.

What to try:

  • On Pressable, upload_max_filesize is set at the platform level and cannot be changed. See PHP Info & Limitations on Pressable for the current value.
  • For files that exceed the limit, upload them directly to wp-content/uploads/ via SFTP, then use a plugin like Media Sync to import them into the media library.
  • For video content, consider hosting on a dedicated video platform (VideoPress, YouTube, Vimeo) and embedding rather than uploading directly to WordPress.

Broken or Missing Images in the Media Library

Images that appear as broken placeholders in the media library usually indicate that the image files are missing from the server, that file paths are mismatched, or that a URL change has left image references pointing to the wrong location.

What to try:

Image Editing / Regenerating Thumbnails Fails

WordPress uses PHP’s GD library for image manipulation. If thumbnail generation or in-browser image editing fails, a pluginโ€™s use of this library may be misconfigured, or an image optimization service may be interfering.

What to try:

  • Check whether the failure is happening with all images or specific file types. Some image formats have library-specific requirements.
  • Temporarily deactivate image optimization plugins and test whether thumbnail generation works without them.
  • For bulk thumbnail regeneration, WP-CLI is more reliable than doing it through the admin: wp media regenerate --yes. This can be a resource-intensive process so you should consider running it at your lowest traffic time of day.

WordPress HTTP Error on Upload

A vague “HTTP error” appearing in the media upload modal can have several causes: an expired session, a filename with special characters, a PHP memory exhaustion during image processing, or a plugin conflict.

What to try:

  • Refresh the page and try again; an expired session is a common and trivial cause.
  • Rename the file to remove any special characters, spaces, or non-ASCII characters, then retry.
  • Temporarily deactivate plugins, particularly any image optimization plugins, and test. We recommend this test happen on a clone rather than the live site.
  • Check error logs for a PHP memory exhaustion error that may be occurring during image processing.

Part 6: Database Errors

The WordPress database stores almost everything: posts, pages, settings, user data, and plugin configuration. Database errors tend to be disruptive and can take the site completely offline.

Error Establishing a Database Connection

This is one of the most alarming WordPress errors: the site can’t connect to the MySQL database at all, leaving visitors with a generic error page.

What to try:

  • Check wp-config.php and verify that DB_NAME, DB_USER, DB_PASSWORD, and DB_HOST are not present in the file. At Pressable those credentials are dynamically provisioned and should not be present in the config.
  • Check wp-config.php and verify that the database prefix is correct.

“One or More Database Tables Are Unavailable”

This message appears when WordPress can connect to the database but cannot find or access one of its expected tables. This can happen after a failed migration, a partial import, or table corruption.

What to try:

  • Navigate to Tools โ†’ Site Health in the WordPress admin for additional diagnostics if you can still access it.
  • Use phpMyAdmin (accessible via the Pressable dashboard) to check whether the expected tables are present and whether any show an error status.
  • If tables are missing, restore from a Pressable backup.
  • If tables are present but showing as crashed, phpMyAdmin provides a repair option under Operations.

Database Corruption

MySQL tables can become corrupted due to interrupted writes, server crashes, or storage issues. A corrupted table may prevent the affected data from being read or written.

What to try:

  • For database corruption, restore from a Pressable database backup, which are taken hourly (provided a change from the previous backup is detected).
  • For complex cases where a restore is not possible, you may need to hire a developer with WordPress database expertise.

Too Many Connections

MySQL has a maximum number of simultaneous connections it will accept. When this limit is hit, additional connection attempts fail. On a managed platform like Pressable, this typically indicates a site-level problem rather than a server-level one.

What to try:

  • Identify plugins that may be opening excessive database connections: heavy page builders, certain membership plugins, and data sync plugins are common offenders.
  • Check whether the issue correlates with a scheduled task or high traffic period.
  • Use the Query Monitor plugin to identify plugins making unusual numbers of database queries.

Part 7: Plugin and Theme Errors

Plugins and themes are the most common source of WordPress errors, largely because they vary so widely in code quality and because they interact with each other in ways that are difficult to predict.

Plugin or Theme Conflicts

A conflict occurs when two or more plugins (or a plugin and a theme) try to do something incompatible: hook into the same function, load conflicting versions of a library, or modify the same data in incompatible ways. Conflicts usually surface after installing or updating something.

What to try:

  • Deactivate all plugins and reactivate one at a time, testing after each. This is tedious but reliable. We recommend doing this testing on a clone rather than the live site.
  • The Health Check & Troubleshooting plugin provides a safe mode that lets you deactivate plugins and switch themes for your session only, without affecting other visitors.
  • Switch to a default theme to rule out theme involvement.
  • Check Tools โ†’ Site Health for any flagged issues.

Plugin Update or Installation Failure

An update or fresh installation can fail if the package cannot be downloaded, if there is insufficient disk space, or if file permissions prevent WordPress from writing to the plugins directory.

What to try:

  • Retry the installation or update. Transient failures often resolve immediately.
  • Verify file permissions on wp-content/plugins/ (should be 755).
  • Check available disk space in the Pressable dashboard.
  • For premium plugins, confirm that your license is valid and that the vendor’s server is reachable.

“The Package Could Not Be Installed”

This specific message during a plugin or theme install usually means the downloaded package is corrupted, has an unexpected structure, or could not be extracted.

What to try:

  • Re-download the plugin or theme package from the source and try again.
  • If installing a ZIP from a vendor, verify the file is not corrupted (check the file size against what the vendor reports).
  • Install via WP-CLI as an alternative: wp plugin install plugin-slug or wp plugin install /path/to/plugin.zip.

A Theme Fails to Activate

A theme can fail to activate if it has a PHP error, incompatible code, or a missing dependency (like a required parent theme).

What to try:

  • Check error logs immediately after attempting activation for a PHP error.
  • If the theme is a child theme, verify that the parent theme is installed and active.
  • Confirm that the theme is compatible with your current PHP version. See Pressable’s PHP Version Policy.

Fatal Errors After a Plugin or Theme Update

An update can introduce a PHP fatal error if the new version contains a bug, a breaking change, or a conflict with another plugin.

What to try:

  • Roll back the update via SFTP by replacing the updated plugin folder with the previous version. The WP Rollback plugin can handle this through the admin if you can still access it.
  • Check the plugin or theme’s changelog and support forums for known issues with the new version.
  • Report the bug to the plugin developer with the specific error from your logs.

Part 8: SSL and Security Errors

SSL errors can range from cosmetic (a browser padlock warning) to completely blocking (a visitor cannot reach the site at all). Pressable provisions SSL certificates automatically for all sites; most SSL errors on Pressable are configuration or compatibility issues rather than missing certificates.

ERR_SSL_PROTOCOL_ERROR

This browser error means a secure connection could not be established because of a protocol-level problem. It can appear after switching hosts, changing SSL settings, or installing a new certificate.

What to try:

  • Clear your browser’s SSL state and cache, then retry.
  • Verify that the site URL in Settings โ†’ General uses https:// and not http://.
  • Check that there are no conflicting SSL settings in any active security plugins.
  • Test using an SSL checker tool (SSLShopper, SSL Labs, WhyNoPadlock) to identify specific certificate or protocol issues.

ERR_SSL_VERSION_OR_CIPHER_MISMATCH

This error indicates that the browser and server cannot agree on an SSL/TLS version or cipher suite. It can also appear after a migration if the certificate is associated with a different domain.

What to try:

  • Verify that the certificate matches the domain you are accessing. A name mismatch after a domain change is a common cause.
  • Ensure your browser and operating system are up to date, as older versions may not support current cipher suites.
  • If this appeared after migrating to Pressable, confirm that the SSL certificate has been provisioned for the new domain and that DNS has fully propagated.

Mixed Content Warnings

When a site loads over HTTPS but some resources (images, scripts, stylesheets) are still referenced with http:// URLs, browsers flag this as mixed content. The padlock icon will be broken or absent, and some browsers will block the insecure resources.

What to try:

  • Test the site at WhyNoPadlock, which can often flag specific plain HTTP requests
  • Use Pressable’s built-in search replace from the site’s control panel to update update hardcoded http:// URLs in the database to https://.
  • Install and run the Better Search Replace plugin to update hardcoded http:// URLs in the database to https://.
  • Alternatively, use WP-CLI: wp search-replace 'http://yoursite.com' 'https://yoursite.com' --skip-columns=guid.
  • Check theme files and any hardcoded asset URLs in functions.php or custom CSS.
  • Use a browser’s developer tools (Network tab, filtering for mixed content) to identify exactly which resources are loading over HTTP.

SSL Handshake Failed

This error means the browser and server started the process of establishing a secure connection but could not complete it. It can happen for several reasons: a certificate issue, a protocol mismatch, or a network-level problem.

What to try:

  • Test with an SSL diagnostic tool (SSLShopper, SSL Labs, WhyNoPadlock) to identify where in the handshake process the failure is occurring.
  • Verify that the certificate is valid and not expired.
  • Check whether a CDN or proxy is involved and test with it temporarily disabled.

Incorrect File Permissions

File permissions control what can read, write, and execute files on your server. Permissions that are too restrictive can prevent WordPress from functioning; permissions that are too permissive can expose your site to security risks.

The correct default values for WordPress are:

  • Directories: 755
  • Files: 644
  • wp-config.php: 600 (more restrictive than other files, since it typically contains database credentials)

What to try:

  • Connect via SFTP and check permissions on the directories and files most commonly involved in errors: wp-content/, wp-content/uploads/, wp-content/plugins/, and wp-content/themes/.
  • Use your SFTP client’s recursive permission-setting feature to reset permissions across a directory in bulk, but be precise about what you’re changing.
  • Do not set files or folders to 777. This makes files or folders writable by any process on the server and is a significant security risk.

Part 9: Performance and Caching Errors

Performance issues often don’t look like errors in the traditional sense. There is no error code, no failure message; the site just loads slowly, the admin becomes sluggish, or requests start timing out under load. Understanding the Pressable caching and worker architecture helps interpret what’s actually happening.

Caching on Pressable: What Works and What Doesn’t

Pressable provides built-in caching at multiple layers: Batcache for page caching, Memcache for database object caching, and Edge Cache for static assets. These are managed at the platform level using advanced-cache.php and object-cache.php, which are symlinked into every site as read-only files.

For cache management on Pressable, use the Pressable Cache Management Plugin or clear cache through the Pressable dashboard.

PHP Worker Exhaustion

Each site on Pressable has a pool of PHP workers (5 by default on current Signature plans) that process requests. When all workers are busy, incoming requests have to wait. If the queue backs up enough, the site will return 503 errors.

What to try:

  • See Diagnosing and Mitigating PHP Worker Saturation for a step-by-step approach specific to Pressable.
  • Use Query Monitor or the Site Health screen to identify slow queries and expensive operations.
  • Evaluate whether plugins making external API calls do so on every request or only when needed. Caching API responses locally (even for a few minutes) can dramatically reduce external call volume.

Slow Admin or Slow Queries

A sluggish WordPress admin is usually caused by expensive database queries, poorly optimized plugins, or external resources loading in the admin context.

What to try:

  • Check for excessive page revisions and, if found, clear them with a plugin like WP-Optimize
  • Install Query Monitor and look for slow or repeated queries. The “Database Queries” panel will show which plugins are responsible.
  • Check the autoloaded options in the database. Oversized autoloaded data is one of the most common causes of slow admin in mature WordPress sites. See Speed Up Your WordPress Site by Optimizing Autoloaded Data.
  • Use browser developer tools in the admin to identify slow external requests.

WooCommerce-Specific Performance Errors

WooCommerce sites are particularly susceptible to performance issues because the checkout and cart processes involve real-time communication with multiple external services simultaneously.

What to try:

Part 10: Email Delivery Errors

WordPress sends email for a wide range of reasons: new user notifications, password resets, order confirmations, form submissions, and comment moderation. Email delivery failures are common because WordPress’s default method for sending email (PHP’s mail() function) can be unreliable in modern hosting environments.

WordPress Email Not Sending

If email from your WordPress site is not arriving, the most likely cause is that PHP’s mail() function is being silently rejected by receiving mail servers because it lacks proper authentication.

Pressable-specific note:

What to try:

  • Install an SMTP plugin (WP Mail SMTP, Fluent SMTP, or Post SMTP) and connect it to a transactional email service. See Email Delivery Troubleshooting and SMTP Plugins in the Pressable KB.
  • Recommended services include SendGrid, Mailgun, Postmark, and Amazon SES, all of which offer free tiers suitable for most sites.
  • Use the test email feature built into most SMTP plugins to confirm the connection is working.

“Failed to Connect to SMTP Server”

This error appears when an SMTP plugin is configured but cannot establish a connection to the specified mail server.

What to try:

  • Verify the SMTP hostname, port, username, and password in your plugin settings.
  • Check Pressable Service and Platform Considerations for details on which outbound ports are available on Pressable. Port 25 is commonly blocked; use port 587 (STARTTLS) or 465 (SSL) instead.
  • Log in to your email service provider’s dashboard to confirm your account is active and that API keys or credentials have not been rotated.
  • Check the email provider’s status page for any ongoing incidents.

Emails Going to Spam

Emails from WordPress sites end up in spam when the sending configuration doesn’t include proper authentication records, or when the sending domain or IP has a poor reputation.

What to try:

  • Confirm that SPF, DKIM, and DMARC records are configured at your domain registrar for your transactional email service. Each service provides specific instructions for these.
  • Use an email testing tool (Mail Tester, MXToolbox) to analyze your sending configuration and identify missing authentication records.
  • Ensure you are sending from an address at your own domain (e.g., noreply@yoursite.com) rather than a generic address at the email service’s domain.
  • Check your transactional email service’s dashboard for bounce and spam complaint rates, which can affect deliverability across all your outgoing mail.

Part 11: Domain and DNS Errors

DNS errors are frustrating because they are almost entirely outside your WordPress site and often outside Pressable’s infrastructure as well. They live at the registrar and nameserver level, and they affect how the internet finds your site.

Site Not Resolving After Launch or Migration

If a site is not loading after you’ve pointed DNS to Pressable, it is almost always a DNS propagation issue. DNS changes take time to spread across the global network of resolvers.

What to try:

SSL Certificate Not Activating

Pressable provisions SSL certificates automatically, but certificate issuance depends on DNS being correctly pointed and the certificate authority (Let’s Encrypt) being able to validate domain ownership.

What to try:

  • Confirm DNS is fully propagated before expecting the certificate to issue.
  • Check for CAA records using an MX lookup tool (MXToolbox supports CAA lookups). If CAA records exist but do not include letsencrypt.org, add an entry permitting it.
  • If the certificate still doesn’t issue after DNS is correct, check the Pressable dashboard for any domain-level errors and reach out to support with specific details.

“This Site Can’t Be Reached” vs. “Your Connection Is Not Private”

These two browser messages indicate different problems and should be treated separately.

  • “This site can’t be reached” typically means DNS is not resolving, the server is not responding on the expected port, or the connection is being refused. It’s a connectivity problem.
  • “Your connection is not private” means the site is reachable, but there is an SSL certificate problem. The server responded, but the browser doesn’t trust the certificate.

What to try:

  • For “can’t be reached”: check DNS propagation, confirm the domain is correctly configured in the Pressable dashboard, and verify the site itself is not suspended or offline.
  • For “connection is not private”: check whether the SSL certificate has expired, whether it covers the specific subdomain or domain being accessed, and whether the certificate has finished provisioning.

ERR_NAME_NOT_RESOLVED / ERR_CONNECTION_REFUSED

These are more specific versions of connectivity errors.

  • ERR_NAME_NOT_RESOLVED means DNS could not turn the domain name into an IP address. The domain may not exist, DNS may not have propagated, or the DNS records may be misconfigured.
  • ERR_CONNECTION_REFUSED means DNS resolved correctly, but the server at that IP actively refused the connection. This can indicate the service is down, the port is blocked, or the domain is not recognized by the server it resolved to.

What to try:

  • For ERR_NAME_NOT_RESOLVED: verify your DNS records at your registrar and use a propagation checker to confirm they are resolving correctly.
  • For ERR_CONNECTION_REFUSED: confirm the domain is added to your Pressable site, that the site is active in the dashboard, and that the IP the domain resolves to is a Pressable address.

Appendix: Reference and Tools

Where to Find Error Logs on Pressable

Error logs are your most reliable source of truth when diagnosing WordPress errors. On Pressable:

  • PHP error logs are accessible through the Pressable dashboard under your site’s Logs section.
  • WordPress debug log can be enabled by adding the following to wp-config.php:
define('WP_DEBUG', true);define('WP_DEBUG_LOG', true);define('WP_DEBUG_DISPLAY', false);
  • The log will be written to wp-content/debug.log. Set WP_DEBUG_DISPLAY to false so errors are not shown to visitors. Remove or disable these constants when you are finished troubleshooting.

Accessing Your Site via SFTP When wp-admin Is Unavailable

SFTP access lets you modify files directly when a PHP fatal error or plugin conflict has locked you out of the admin.

Connection details are available in the Pressable dashboard under your site’s settings. Use an SFTP client such as FileZilla, Cyberduck, or Transmit.

Common SFTP recovery operations:

  • Rename wp-content/plugins/ to wp-content/plugins-disabled/ to deactivate all plugins at once.
  • Rename a theme folder inside wp-content/themes/ to force WordPress to fall back to a default.
  • Edit wp-config.php to enable or disable WP_DEBUG constants.

Using WP-CLI on Pressable

Pressable provides WP-CLI access via the SSH. Note that Pressable enforces specific command ordering; not all standard WP-CLI commands will behave exactly as documented. Test commands carefully and check the output for unexpected results.

Useful WP-CLI commands for troubleshooting:

# Check WordPress status
wp core verify-checksums
wp plugin verify-checksums

# List and deactivate all plugins
wp plugin list
wp plugin deactivate --all

# Flush rewrite rules (resolves many 404 issues)
wp rewrite flush

# Search and replace URLs in the database
wp search-replace 'http://oldsite.com' 'https://newsite.com' --skip-columns=guid

# Regenerate image thumbnails
wp media regenerate --yes

# Check and repair the database
wp db check
wp db repair

Glossary of Common Error Codes

CodeNameQuick Description
400Bad RequestMalformed request; bad URL or corrupt cookie
401UnauthorizedAuthentication required
403ForbiddenServer refuses access; permissions issue
404Not FoundResource doesn’t exist at this URL
405Method Not AllowedHTTP method not accepted for this endpoint
408Request TimeoutClient didn’t complete the request in time
413Request Entity Too LargePayload exceeds server limit
429Too Many RequestsRate limit exceeded
500Internal Server ErrorGeneric PHP or server error
502Bad GatewayInvalid response from upstream server
503Service UnavailableServer can’t handle request; often PHP worker saturation
504Gateway TimeoutUpstream server took too long to respond
508Resource Limit ReachedSite exceeded allocated resource limits
521Cloudflare: Web Server DownCloudflare can’t connect to origin
522Cloudflare: Connection Timed OutConnection between Cloudflare and origin timed out
524Cloudflare: A Timeout OccurredOrigin responded but took too long