Brian's Blog Homepage
Sweeping up broken glass with a large brush

Stop Guessing. Start Debugging.

If your first move when something breaks is to update everything, you are not troubleshooting — you are gambling.

Print This Before Touching Anything

Before you change a setting, update an extension, or touch a file, confirm the following:

  • I know what changed most recently (or I have confirmed nothing did)
  • I can describe what is broken, where, and for whom
  • Error reporting is off initially, so I am seeing the failure as users see it
  • I have not updated Joomla, PHP, or extensions since the failure occurred
  • I am prepared to change one thing at a time and observe the result

If you cannot tick all of these boxes, you are not ready to debug.


What Professionals Don’t Do

Professionals do not:

  • Update Joomla in the middle of an incident
  • Install or remove extensions "to see if it helps"
  • Disable everything and call it troubleshooting
  • Blame the CMS before collecting evidence

Those are not debugging techniques. They are panic responses.

If a client is paying you to maintain their site, your job is not to look busy. Your job is to be deliberate.


Step 1: Stop. Do Not "Try Things"

Before you touch anything, stop.

Do not update Joomla. Do not update extensions. Do not start disabling things at random.

Every change you make destroys evidence.

Write down:

  • What changed immediately before the problem appeared
  • Whether this affects the frontend, backend, or both
  • Whether it happens everywhere or only on one page

"Nothing changed" is still important information.


Step 2: Force Joomla to Tell the Truth

Joomla almost always knows what went wrong. The problem is that it fails in different ways — and each one tells you something different.

Before changing anything, identify which type of error page you are actually seeing.

Different errors require different responses. Treating them the same is how you waste hours.

This is why guessing is not just ineffective — it is irresponsible.

1. A Blank Page

A completely blank page is a PHP error in disguise.

This usually means PHP crashed before Joomla could render an error.

What to do next:

  • Check the server’s PHP error logs
  • AND/OR go to System → Global Configuration and set Error Reporting to Maximum
  • Recreate the error

If you still see nothing, the error is happening very early in execution. That narrows the search dramatically.

2. A Joomla Error Page (Looks Like Your 404 Page)

If you see a styled Joomla error page — often similar to your 404 template — Joomla is catching the error but hiding the details.

What to do next:

  • Go to System → Global Configuration
  • Enable Debug System
  • Recreate the error

This will turn a vague error message into a full stack trace showing exactly where Joomla failed.

3. The Orange Error Page

The orange error page is Joomla telling you something went very wrong at a system level.

What to do next:

  • Enable Error Reporting: Maximum
  • Enable Debug System
  • Check the server error logs
  • Confirm the SQL database server is running and reachable

Database outages, credential failures, or server-level issues commonly surface here.

Can’t access the Joomla administrator?

If the backend is unavailable, you can still enable debugging manually.

Edit the configuration.php file in the root of your Joomla site using FTP or your hosting control panel.  You may need to change the file permissions to 644 first or your changes will not be saved.

Set the following values:

public $debug = true;
public $error_reporting = 'maximum';

Save the file and reload the broken page. Joomla will now expose detailed error information.

Lack of admin access is not an excuse for guessing. If you can edit configuration.php, you can debug.

Turn error reporting and debug back down after you finish debugging, not before.


Step 3: Read the Logs Like an Adult

Joomla logs errors continuously. Ignoring them is a choice.

Check:

  • /administrator/logs/error.php
  • Your server’s PHP error log

Look for patterns rather than single messages:

  • The same file mentioned repeatedly
  • The same extension name appearing again and again
  • Errors that start immediately after a specific action

One error can lie. Repetition does not.

Also check the User Action Logs.

If more than one person has administrator access, Joomla records what they do — even when they insist they did nothing.

Go to Users → User Action Logs and look for:

  • Extensions being installed, updated, or removed
  • Global Configuration changes
  • Plugin, module, or template changes

Joomla does not forget. People do.


Step 4: Disable Caching Because Caching Lies

Caching exists to hide work. That makes it terrible for debugging.

In Global Configuration:

  • Disable System Cache
  • Disable Page Cache plugin (if enabled)

Then clear everything:

  • System → Clear Cache
  • System → Clear Expired Cache

Test again. If the problem "disappears" with cache off, you did not fix it. You exposed it.


Step 5: Prove Whether the Template Is Guilty

Templates are the usual suspects.

  1. Go to System → Site Templates
  2. Set Cassiopeia as default
  3. Reload the broken page

If the issue vanishes, Joomla is innocent. The bug lives in:

  • The template
  • A template override
  • Template JavaScript or CSS

Step 6: Disable Extensions Methodically (Not Dramatically)

Third-party extensions cause most Joomla failures. This is not controversial.

Do not disable everything at once. That tells you nothing.

  1. Disable plugins first, starting with system and content plugins
  2. Test after every single change
  3. Re-enable plugins as you go

When the problem disappears, stop. You found the cause.

Repeat for:

  • Modules
  • Components (last — they break a lot of things when disabled)

Step 7: Check Compatibility, Not Optimism

Ask a boring question with an unglamorous answer:

Is this extension actually compatible with this Joomla version and PHP version?

Check:

  • The extension’s documentation
  • Its Joomla Extensions Directory listing
  • Its issue tracker

If it hasn’t been updated in years, Joomla did not suddenly betray it.


Step 8: Verify Files, Paths, and Permissions

Especially after migrations, restores, or host changes.

Confirm:

  • Files are typically 644
  • Folders are typically 755
  • /tmp and /logs paths are correct
  • Joomla can write to both

Permission problems masquerade as random failures. They are not random.


Step 9: Reproduce the Failure on Purpose

If you cannot reproduce the bug, you cannot fix it.

Test:

  • Another browser
  • A private window
  • A different user account
  • A clean menu item pointing to the same content

If it only breaks in one context, that context is the bug.


Step 10: Ask for Help Without Wasting Everyone’s Time

When you ask for help, bring evidence:

  • Joomla version (do not write “latest”; a version always has a number)
  • PHP version
  • Full error messages including the stack trace
  • What you disabled or changed
  • What actually made a difference

"My site is broken" is not a problem description. It’s an admission you skipped the steps above.


The Part People Don’t Like Hearing

Joomla is rarely broken.

What is broken is usually:

  • An incompatible extension
  • A template override nobody remembers adding
  • A careless update sequence
  • Or a hosting environment that quietly changed

Stop guessing. Start debugging. Joomla will tell you what’s wrong if you let it.

And if you are building sites for clients, this part matters. Every random change you make during an incident erodes trust. Clients do not care how fast you panic. They care that you can explain what broke, why it broke, and how you fixed it.

Guessing is how amateurs lose confidence. Debugging is how professionals earn it.

Bookmark this. Send it to your team. Stop guessing.

J o o m l a !

Brian Teeman

Brian Teeman

Who is Brian?

As a co-founder of Joomla! and OpenSourceMatters Inc I've never been known to be lacking an opinion or being too afraid to express it.

Despite what some people might think I'm a shy and modest man who doesn't like to blow his own trumpet or boast about achievements.

Where is Brian?