Upgrading PHP 5 or 7 to PHP 8: what breaks and what it takes

The short answer: most old sites need changes rather than a rewrite. PHP 8 removed some old functions and got much stricter about sloppy code, so things that used to fail quietly now stop the page. A sensible upgrade runs a copy on PHP 8, fixes what the error log shows, tests every page, then switches over.

What actually breaks

These are the ones we meet again and again moving old sites, including old content management systems like Perch and ExpressionEngine:

What breaksFrom real upgrades, October 2026
  • count()Counting something that isn't a list used to give 0 or 1. Now it stops the page with an error.
  • each()Removed. Old loops written with it simply stop working.
  • create_function()Removed. Common in older plugins and add-ons.
  • mysql_*The original database functions, gone since PHP 7. Very old sites still use them.
  • split(), ereg()Old pattern functions, also gone since PHP 7.
  • "abc" == 0Comparisons between text and numbers changed, so some if checks quietly give a different answer.
  • null into built-insPassing an empty value where text is expected now raises warnings that fill the logs.
  • Made-up propertiesSetting properties a class never declared is deprecated, and older frameworks do it everywhere.

The quiet ones are the worry. A removed function stops the page, so you find it straight away. A comparison that now gives a different answer can sit in a pricing or permissions check and nobody notices for weeks.

How a sensible upgrade goes

  1. Copy it. The site and a copy of the data, onto a server running the new PHP. Never upgrade the live one in place.
  2. Let it complain. Turn the error log right up and click through everything. The log is your to-do list.
  3. Fix the code, not the symptoms. Where an old function was used in dozens of places, a small compatibility layer can stand in for it while the real fixes go in.
  4. Test the things that make money. Checkouts, quotes, invoices, logins, anything with a calculation. That's where the quiet changes hide.
  5. Switch over with the old version kept ready to switch back. How we do that.

The removed functions find themselves. It's the comparisons that quietly change answers you need to go looking for.

Small job or big one?

It's a small job if the site is mostly a well-known CMS or framework with a supported version, and the custom code is light. It gets bigger with every version you've skipped, every abandoned plugin, and every bit of custom code nobody has documented. A framework that's stopped moving, like CodeIgniter 3, adds its own list.

The honest way to find out is to look. A System Review reads the code, tells you what will break, and puts a fixed price on each fix. £250 + VAT, five working days.

← Old software nobody will touch: keep, fix or replace

Need it on PHP 8?

Tell us what you have and we'll tell you what it takes.

What the site or system is, what it's built with if you know, and roughly how old it is.

What we will cover:

  • What will break, and what won't
  • A fixed price for each fix
  • A switch-over plan with a way back

Rather talk now? Book a call or ring 01474 639 089.

We reply within one working day.

Get in touch