Quick answer: HTTP 500 is the application saying "I crashed" — the answer is always in the error log. Check the web server error log and the PHP-FPM log, reproduce the request, and read the newest lines: a syntax error, a fatal exception, a permissions problem or a broken .htaccess will be named there explicitly.

Overview

Unlike 502/504 (the app did not answer), a 500 means the app answered "internal error". The cause is in your code, configuration or permissions — and it is logged. Guessing without logs wastes time; reading them solves most 500s in minutes.

Before you start

  • SSH access and knowledge of your stack (nginx+PHP-FPM, Apache, panel-managed...).

Step-by-step guide

  1. Watch the logs while reproducing the error:
    sudo tail -f /var/log/nginx/error.log /var/log/php8.3-fpm.log
    (Apache: /var/log/apache2/error.log; panels keep per-site logs in the panel's directory.)
  2. Reload the failing page and read the newest entry — PHP fatals name the file and line.
  3. Roll back the last change: a deploy, plugin/theme update or config edit immediately before the 500 is the cause until proven otherwise.
  4. Check permissions/ownership if files were copied as root:
    sudo chown -R www-data:www-data /var/www/yoursite
  5. For WordPress specifically (plugins, .htaccess, memory limit) follow the WordPress 500 guide.
  6. Config syntax check after edits:
    sudo nginx -t

Common issues

  • Empty error log: you are reading the wrong log — confirm which vhost serves the domain.
  • 500 only on some URLs: rewrite rules or a specific script — the log still names it.
  • Full disk: apps fail half-way and throw 500s — check df -h early.
  • PHP version mismatch after an upgrade: old code + new PHP = fatals; align the version per site.

When to contact support

Application code is customer-side on an unmanaged server, but if logs point to the platform (storage errors, resources) or you cannot access logs at all, open a ticket with the exact URL, time and the log excerpt.

Frequently asked questions

Where do I find the reason for a 500 error?

In the web server and PHP error logs — a 500 is always logged with details. Tail the logs while reloading the failing page; the newest entry names the file, line or rule that crashed.

The 500 appeared right after an update — coincidence?

Almost never. A deploy, plugin, theme or config change immediately before the error is the cause until proven otherwise. Roll it back first, then investigate the incompatibility calmly.

Related articles

Need a hand? Contact Cloud2Y support →

Was this answer helpful? 0 Users Found This Useful (0 Votes)