Joomla Website Suddenly Stopped Working

Joomla Website Suddenly Stopped Working hero

Written by

in

When a Joomla site suddenly stops working, treat it as a last-change problem, not a mystery. A white screen, an HTTP 500, or a red system error page almost always follows a PHP version bump, a bad .htaccess rule, an extension install, or a failed update. Turn error reporting on, read the stack (or error.php), and undo that change on a backup. This is for a site that is down. If the site loads but crawls, use the slow-site diagnosis instead.

A page that used to render and now returns nothing is PHP dying before Joomla can print HTML. A 500 is the same class of failure with the web server covering the message. Joomla can also show its own error page when the CMS still boots: the system error page (red background) or the template error.php layout. Official recovery starts with Debug System and Error Reporting, then the stack. See the Joomla User Manual: Fatal errors and the Joomla 4 docs mirror J4.x:FatalError.

Do this on a backup, and test destructive checks (rename .htaccess, disable plugins in the database) on staging first when you have a copy. Production is not the place to discover that mod_rewrite was the only thing keeping URLs alive.

White screen, HTTP 500, and Joomla error.php are three faces of the same outage

White screen means PHP failed with display_errors off. 500 is the server wrapping that failure. error.php means Joomla still booted far enough to render an error layout.

What you will learn

  • How to tell a white screen from a 500 from a Joomla error.php page
  • Why the last change (PHP, .htaccess, extension, update) is the first clue
  • How to turn on Debug System when the administrator is dead
  • Which PHP versions Joomla 4, 5, and 6 actually require
  • How to test .htaccess without burning production
  • How to disable a bad extension from #__extensions if admin will not load
  • What to revert after the site is up

White screen, 500, and error.php

What you see What it usually means First move
Blank white (or empty) page PHP fatal with display_errors off. Joomla never printed output. PHP error log, then Debug System in configuration.php
HTTP 500 from Apache or nginx Same class of failure. The server hid the PHP message. Same, plus the vhost / host error log
Red system error page Serious error before the site or admin template rendered Read the message. Enable debug if it is incomplete
Template-styled error page Error in content code. Joomla used templates/{name}/error.php or templates/system/error.php Read the message and stack. Do not “fix” the crash by rewriting error.php

Joomla’s error.php is an error layout, not a debugger. Core documents it as independent of the CMS plugin chain: no <jdoc:include />, no modules. Override path: copy templates/system/error.php into the active template. Docs: Custom error pages. If a custom error.php was edited badly, it can make a recoverable error look like a total outage. Compare it to the stock file from the same Joomla package before you chase plugins.

If the public site is down but /administrator/ still loads, you still have Global Configuration. If both are down, you edit configuration.php over SFTP or the host file manager.

Step 1: Take a backup and name the last change

Before you rename files or toggle plugins, snapshot files and the database. Host backup, Akeeba, or both. Write one sentence: “The host moved us to PHP 8.3 last night,” or “We installed extension X,” or “We turned on URL rewriting,” or “We ran a Joomla update.”

Typical last changes that take a site down:

  • Host PHP upgrade or a MultiPHP selector change
  • Joomla or extension update
  • New plugin, module, or template
  • .htaccess edit (security generator, RewriteBase, custom deny rules)
  • Disk full, inode limit, or a restored backup that missed configuration.php

If you cannot name a change, check the host’s PHP version history and the Joomla #__extensions enabled / install dates anyway. Hosts often bump PHP without telling you. That is still a last change.

If the site is on an old Joomla 3 stack that a host just moved to PHP 8, the fix is not a one-line patch in core. Plan a proper Joomla upgrade.

Step 2: Confirm PHP matches this Joomla version

Joomla will fatal on a PHP that is too old or on a jump your extensions never saw. Minimums below are from the Joomla project’s technical requirements (Joomla 4.x, 5.x, and 6.x tables). Recommended versions are what the project tests against.

Joomla PHP minimum PHP recommended (project tables) Source
4.x 7.2.5 8.2 Hosting setup
5.x 8.1.0 8.3 Joomla 5.4 technical requirements
6.x 8.3.0 8.4 Joomla 6 technical requirements

Required PHP modules listed there include json, simplexml, dom, zlib, gd, and mysqlnd or pdo_mysql (or pdo_pgsql). Recommended memory limit is at least 256MB.

If administrator still loads: System → Information → System Information (and the PHP Information tab). If it does not: phpinfo in a throwaway file on staging, or the host’s MultiPHP / Select PHP Version screen. Then compare to the table. A Joomla 5 site on PHP 7.4 will not boot. A Joomla 4 site whose third-party plugin is not PHP 8.3-ready will white-screen after a host bump even when core is fine.

Do not “fix” a PHP mismatch by editing core files. Switch PHP on the host (or staging) to a version that matches both Joomla and the installed extensions. Then update or replace the extension.

Step 3: Turn on Debug System and Maximum error reporting

If administrator works: System → Global Configuration. System tab: Debug System = Yes. Server tab: Error Reporting = Maximum. Save. Reload the broken URL. You want a stack trace, not a prettier blank page.

If administrator is dead, edit configuration.php in the site root. Official steps:

  1. If the file is 444 / read-only, set it to 644 so you can write.
  2. Set $debug to true and $error_reporting to 'maximum'.
  3. Save. Reload the broken URL.

That wording is from the Fatal errors manual. After you save Global Configuration later, Joomla sets configuration.php back to read-only. That is intended.

Read the first frame that is not core bootstrap. A path under plugins/, modules/, components/com_something (not com_content / com_users unless you overrode them), or a template html/ override is the usual culprit. The official advice if you can name the extension: disable it. If admin is down, in phpMyAdmin (or equivalent) open #__extensions, find that row, set enabled to 0. Do not disable core Joomla extensions as a fishing trip.

Also read the PHP error log the host provides. A fatal that happens before Joomla loads configuration.php never appears in the Joomla debug console.

When you are done, set Debug System back to No and Error Reporting back to System Default. Leaving Maximum on a public site leaks paths.

Step 4: Test .htaccess on staging, not by deleting production

Apache 500s after “Use URL Rewriting” or after a security .htaccess generator are common. Joomla ships htaccess.txt. Enabling rewriting is: rename htaccess.txt to .htaccess, then Global Configuration → Site → Use URL Rewriting. Official walkthrough: SEF URLs on Apache. If mod_rewrite is missing, turning rewriting on is a 500. If RewriteBase is wrong for a subdirectory install, same class of failure.

Do not delete .htaccess on the live site to “see what happens.” Copy the site to staging, or at minimum copy .htaccess to .htaccess.bak and keep that backup off to the side.

On staging:

  1. Confirm you have the backup copy.
  2. Rename .htaccess to .htaccess.bak (Apache then ignores it).
  3. Reload. If the site returns (often with /index.php/ in URLs), the rules were the problem.
  4. Restore stock rules from the htaccess.txt that matches this Joomla version. Do not paste a Joomla 3 file onto Joomla 5.
  5. If you use a subdirectory, set RewriteBase to that folder as the SEF docs describe.
  6. Only then turn Use URL Rewriting back on and retest.

Extra Deny / Rewrite blocks from security tools belong in the “last change” list. Test those on staging too. A rule that forbids a PHP file you actually need is a 500, not a permissions mystery.

nginx does not use .htaccess. If the host is nginx, a rename test proves nothing about rewrite. Use the vhost config and the host error log instead.

Step 5: Read error.php, then disable the bad extension

If you get a template-styled error page, open the active template’s error.php only to read what it prints. Compare with templates/system/error.php. You are looking for the exception message and file path, not a design tweak.

Once the stack names an extension:

  • Administrator working: disable the plugin/module/component there.
  • Administrator dead: #__extensions.enabled = 0 for that row.
  • Override involved: a layout in templates/{template}/html/ can fatal after a Joomla update if the parent view changed. Rename the override folder on staging (do not delete until you know). Safe customisation belongs in a child template, not in core. See customize Joomla without editing core.

The User Manual also points at the Forum Post Assistant (FPA), a standalone PHP script the Joomla Forum uses. Install it only while debugging, in the site root, then remove it when you clean up. It is not a substitute for a backup.

Disk space, memory, and script timeouts are on the official cause list too. A full disk makes Joomla look “suddenly dead” after a cache or log spike. Check the host panel before you rewrite configuration.php a third time.

Five checks when Joomla suddenly stops

Order: last change, PHP version, debug/stack, .htaccess on staging, then disable the named extension.

What this article is not

This is not “why is Joomla slow.” A slow site still responds. Diagnose that in Why is my Joomla website slow and fix it with How to speed up a Joomla website. Admin-only slowness is Joomla admin dashboard is slow.

If you cannot get a stack and cannot afford more downtime, that is a restore-from-backup moment, then a staged replay of the last change. Joomla support and maintenance is the human version of that loop.

Key takeaways

  1. A white screen and a 500 are usually the same PHP fatal. error.php means Joomla still booted far enough to render an error layout.
  2. Name the last change first: PHP version, .htaccess, extension, or update.
  3. Match PHP to the official table for Joomla 4, 5, or 6, and to your third-party extensions.
  4. Enable Debug System and Maximum error reporting in Global Configuration, or set $debug and $error_reporting in configuration.php when admin is down.
  5. Test .htaccess by renaming a copy on staging after a backup. Restore from this Joomla version’s htaccess.txt.
  6. Disable the extension named in the stack. Use #__extensions if the administrator will not load. Do not disable core as a guess.
  7. Turn debug off when you are done. Remove FPA. Put configuration.php back to how Global Configuration saves it (read-only).

Frequently asked questions

Why is my Joomla site a white screen of death?

PHP hit a fatal error and display_errors is off, so you get no HTML. Enable Debug System and Maximum error reporting, or set $debug to true and $error_reporting to 'maximum' in configuration.php, then reload and read the stack and the PHP log.

What does an HTTP 500 mean on Joomla?

The web server failed to complete the request. On Joomla that is commonly a PHP fatal, a .htaccess / rewrite problem, or a missing mod_rewrite after Use URL Rewriting was enabled. Check the server error log and the same debug steps as a white screen.

How do I enable Joomla debug if I cannot log in to administrator?

Edit configuration.php in the site root. Make it writable if it is 444, set $debug to true and $error_reporting to 'maximum', save, reload. That is the official path in the Fatal errors user manual.

Should I delete .htaccess to fix a 500?

No. Copy it to .htaccess.bak and test the rename on staging (or after a verified backup). If the site returns, replace rules from this version’s htaccess.txt and fix RewriteBase if Joomla lives in a subdirectory.

Where is Joomla error.php?

Stock file: templates/system/error.php. If the active template has its own error.php, Joomla uses that instead. It displays the error. It is not where you patch the bug. See Custom error pages.

Can a PHP version change take Joomla down overnight?

Yes. Hosts change MultiPHP without a Joomla update. Joomla 5 needs PHP 8.1 or newer. Joomla 6 needs PHP 8.3 or newer. An old plugin can still fatal on a newer PHP even when core is compatible.

Do I edit core PHP to get the site back?

No. Disable the extension, restore the backup, or roll PHP back to a compatible version. Core edits vanish on the next update or block the update. Use overrides and a child template for lasting changes.

Conclusion

A Joomla site that “just died” almost never died of boredom. It died of the last change. Backup, name that change, match PHP, turn the errors on, test .htaccess on staging, then disable what the stack names. When the page renders again, turn debug off and keep the backup until the next day behaves.

If you are still on a Joomla version the host will not run, schedule the upgrade on a clone, not as a panic edit on production.