Skip to content

PHP 8.5 migrations - UK-based, agency-friendly

Stop Drowning in Legacy Code. Secure & Upgrade Your PHP Apps to PHP 8.5.

Two decades of commercial backend experience, applied with automated precision. We move PHP 5.6, 7.x and early 8.x applications to PHP 8.5 using static analysis, generated test coverage and incremental, reversible releases - so your production site never becomes the test environment.

  • 20 years commercial PHP
  • Zero-downtime release strategy
  • No big-bang rewrites
src/InvoiceService.php 7.4 → 8.5
final class InvoiceService{    public function total($items, $rate = null)    public function total(array $items, ?float $rate = null): Money    {        $rate = isset($rate) ? $rate : self::VAT;        $rate ??= self::VAT;        $sum = array_sum(array_map(function ($i) {            return $i->price; }, $items));        $sum = array_sum(array_map(fn (Item $i) => $i->price, $items));         $ref = strtoupper(trim($this->prefix . $id));        $ref = ($this->prefix . $id) |> trim(...) |> strtoupper(...);    }}
Rector ✓ applied PHPStan 0 errors Tests passing

Illustrative example of an automated, reviewed refactor.

Our upgrade toolchain

  • PHPStan
  • Rector
  • PHPUnit
  • Pest
  • Composer
  • GitHub Actions
  • GitLab CI
  • Docker

The problem

Legacy PHP is a liability that grows every month

The upgrade you keep postponing is costing more than the upgrade itself - in risk, in hosting pressure and in your team’s time.

Hosts are pulling the plug

PHP 7.3 and 7.4 are years past end of life. Managed hosts and cPanel providers are forcing upgrades, charging “extended support” premiums, or quietly retiring old runtimes altogether.

Unpatched security exposure

End-of-life PHP receives no security fixes. Every new CVE stays open forever - and running unsupported software can fail Cyber Essentials, PCI DSS and client security questionnaires.

Dependency lock-in

Composer packages, frameworks and payment SDKs have moved on. Stuck on an old runtime, you can’t take their security patches - or their features.

Developer opportunity cost

Senior developers spend billable hours firefighting fragile legacy code instead of shipping new work. Upgrades get pushed to “next quarter”, every quarter.

Hiring & retention friction

Good engineers don’t want to maintain PHP 7 spaghetti. Modern, typed PHP 8.5 is easier to onboard, review and hand over.

Performance left on the table

Each PHP 8 release brings engine, OPcache and memory improvements. Modern runtimes typically serve the same traffic on less hardware.

Where does your version stand?

Official PHP support status as of 2 October 2026.

End of life Security fixes only Active support
  • PHP 7.3

    End of life

    Ended

  • PHP 7.4

    End of life

    Ended

  • PHP 8.0

    End of life

    Ended

  • PHP 8.1

    End of life

    Ended

  • PHP 8.2

    Security fixes only

    Until

  • PHP 8.3

    Security fixes only

    Until

  • PHP 8.4

    Active support

    Until

  • PHP 8.5

    Active support

    Until

Release dates, active support and security support for every version back to PHP 5.6: PHP end-of-life dates →

Methodology

Why complex codebases are safe in our hands

Upgrades fail when they rely on luck and manual find-and-replace. Ours rely on tooling that proves each change is safe - and on twenty years of knowing where legacy PHP hides its surprises.

What you won’t get

  • A risky “rewrite it in a framework” pitch
  • A weekend-long outage and crossed fingers
  • A 5,000-file pull request nobody can review
  1. 01

    Static analysis baseline

    PHPStan maps the codebase before anyone touches it: type errors, dead code, undefined calls and risky dynamic behaviour. We record a baseline, then ratchet the level up as the code improves - so nothing regresses.

    • PHPStan
    • Composer audit
    • php-compatibility
  2. 02

    Characterisation tests first

    Legacy apps rarely have tests. We generate integration and HTTP-level snapshot tests that capture what your application does today on critical paths - checkout, auth, APIs, imports - so behaviour changes are caught, not shipped.

    • PHPUnit
    • Pest
    • Snapshot tests
  3. 03

    Automated refactoring with Rector

    Rector applies version-by-version upgrade rule sets with repeatable precision: typed properties, constructor promotion, match expressions, enums, readonly classes. Every change lands in small, reviewable commits.

    • Rector
    • php-cs-fixer
    • Small PRs
  4. 04

    Incremental bridging

    No big-bang rewrite. Polyfills and compatibility shims let old and new code coexist while CI runs the suite against both the current and target PHP versions. You can keep shipping features throughout.

    • CI matrix
    • Polyfills
    • Strangler pattern
  5. 05

    Staged, reversible release

    We deploy to staging, compare behaviour and error logs, then cut over production with a documented rollback plan. Zero-downtime strategies (blue/green or rolling) wherever your infrastructure supports them.

    • Staging
    • Blue/green
    • Rollback plan

Productized services

Transparent pricing. No day-rate surprises.

Start with a fixed-price audit, then decide. Every engagement is scoped in writing before work begins.

Tier 1

The PHP Audit & Roadmap

Know exactly what you’re dealing with before you commit a budget. A clear, evidence-based plan you can act on - with us or in-house.

£350 fixed price

Credited in full against a Sprint booked within 30 days

  • Full Composer dependency & compatibility check
  • Rector dry-run analysis against PHP 8.5 rule sets
  • PHPStan baseline with risk hotspot report
  • Server, extension & hosting compatibility review
  • Written migration brief with phased plan & effort estimate
  • Walkthrough call to go through the findings
Book a Codebase Audit - £350

Most complete

Tier 2

The Full Modernisation Sprint

We take your application all the way to PHP 8.5 - tested, typed and deployed to staging, ready for a controlled production cut-over.

From £2,500 fixed quote after your audit - no surprises

  • Complete syntax refactoring to PHP 8.5
  • declare(strict_types=1), typed properties & return types
  • Test coverage for business-critical paths
  • Composer dependency & framework upgrades
  • CI pipeline with PHPStan and test quality gates
  • Staging deployment + production cut-over & rollback plan
Request Custom Quote

Every Sprint is quoted at a fixed price once the audit has sized the work - it depends on codebase size, framework, current PHP version and existing test coverage. Large or untested codebases are quoted in phases, so you approve each stage before it starts. Prices exclude VAT where applicable.

Digital agency? Hand us the overflow.

White-label PHP upgrades for your client estate. We work in your repositories and processes, under NDA, so your team stays on billable feature work. How white-label upgrades work.

Talk partnerships

FAQ

Questions we get asked

Is PHP 7.4 still safe to run?
No. PHP 7.4 reached end of life on 28 November 2022, so newly found vulnerabilities are not fixed in official releases. Your framework and Composer packages have almost certainly stopped supporting it too. See our PHP 7.4 upgrade service and the full list of PHP end-of-life dates.
How long does a PHP 8.5 upgrade take?
It depends far more on the state of the code than on its size. A small, well-maintained application on PHP 8.x can take a few days. A large, untested application on PHP 7 or older, or one with abandoned dependencies, can take several weeks. The £350 audit gives you a written effort estimate before you commit to anything.
Will my site go down during the upgrade?
No downtime is planned. We deploy to staging first, compare behaviour and error logs with production, then switch over with a documented rollback plan, using blue/green or rolling releases where your hosting supports them. On servers you control, PHP 8.5 can run alongside your current version, so switching back is a configuration change.
Can we keep working on the code while you upgrade it?
Yes. Changes arrive as small pull requests merged into your main branch as they are finished, and CI tests both PHP versions until cut-over. There is no long-lived upgrade branch to merge at the end.
What do you need from us for the audit?
Read access to the repository (or a copy of the code), details of your hosting and current PHP version, and a short call about which parts of the application matter most. We don’t need production access for the audit.
Do you upgrade Laravel, Symfony and WordPress sites?
Yes, as well as custom PHP. Framework and PHP upgrades usually have to move together: see Laravel upgrades, Symfony upgrades and WordPress PHP upgrades.
Do you work white-label for agencies?
Yes. We work in your repositories and processes, under NDA, and your clients only ever see your agency. See white-label PHP upgrades for agencies.
Should we rewrite the application instead?
Rarely. Rewrites have to rediscover years of business rules and usually overrun. Upgrading in place, with tests that pin down current behaviour, gets you onto supported PHP sooner and for less. Legacy PHP modernisation doesn’t have to mean starting again.

Get started

Tell us about your codebase

Share a few details and we’ll come back with next steps - whether that’s booking your £350 audit or scoping a full sprint.

  1. 1

    Send the form

    Two minutes. No repository access needed yet.

  2. 2

    Quick scoping reply

    An engineer - not a sales team - reviews your details and replies by email.

  3. 3

    Audit or quote

    Book the fixed-price audit, or receive a written sprint proposal.

Prefer email? [email protected]

We only use these details to reply to your enquiry. No mailing lists, no spam. See our privacy notice.