PHP 5.x · 7.x · 8.0 → PHP 8.5

Your PHP app still works. Nobody is patching it.

We move legacy PHP applications from PHP 5 and 7 to PHP 8.5, the current release, together with the frameworks and libraries underneath, and keep them ready for 8.6. Step by step, covered by tests, while your business keeps running.

30-minute call. You leave with a risk read-out and a ballpark price.

PHP since 2008 · every major version Symfony, Laravel & custom code Zero-downtime releases
$ php -v

Which PHP version runs your app?

Unsupported

No security fixes since 28 Nov 2022.

Almost four years of known holes. Many libraries have already dropped 7.4 too.

The jump to PHP 8 is the hardest one. It is also the one we do most often.

Dates from the official PHP supported-versions schedule (php.net).

PHP support timeline

Below PHP 8.3, the clock has run out or is about to.

Every PHP release gets two years of bug fixes and two of security fixes. After that, the PHP team stops patching it, and so does everyone who builds on it. PHP 8.2 joins the unsupported list on 31 December 2026.

PHP versions and the end of their security support
5.6 Ended 31 Dec 2018
7.0 Ended 10 Jan 2019
7.1 Ended 1 Dec 2019
7.2 Ended 30 Nov 2020
7.3 Ended 6 Dec 2021
7.4 Ended 28 Nov 2022
8.0 Ended 26 Nov 2023
8.1 Ended 31 Dec 2025
8.2 Ends 31 Dec 2026
8.3 Until 31 Dec 2027
8.4 Until 31 Dec 2028
8.5 Until 31 Dec 2029
No security fixes Security fixes ending soon Supported

Security

End of life means every new vulnerability stays open. For good.

Security holes keep being found in old PHP versions after support ends. They are fixed only in supported branches, so yours stays exposed. And the runtime is rarely the only layer that has gone stale.

An unpatched runtime

New CVEs in PHP core, its extensions and bundled libraries never reach end-of-life versions. Attackers know exactly which versions those are.

Frozen dependencies

Old PHP pins you to old Composer packages, many with published vulnerabilities. You can’t update them until PHP itself is upgraded.

End-of-life frameworks

Symfony 2–4, Laravel 5–10, Zend Framework, CodeIgniter 2 and CakePHP 2 get no security releases either. Neither do their plugins.

Legacy code patterns

SQL built by string concatenation, MD5 passwords, unserialize() on user input, homemade CSRF. Common in older code, and easy to exploit.

Outdated crypto and TLS

mcrypt, old OpenSSL and old cURL builds fall behind modern TLS. Payment gateways and APIs eventually stop accepting the connection.

A stale server underneath

Old PHP usually means an old operating system, also out of support. One stuck layer keeps the whole server stuck.

// included in every upgrade

What we fix while we’re in there

An upgrade opens every file anyway. We use that to close the holes the audit found, so you finish with more than a new version number.

  • Prepared statements for every query
  • Passwords rehashed to bcrypt or Argon2id at next login
  • CSRF protection, output escaping, hardened sessions
  • Security headers and a strict Content Security Policy
  • Dependency vulnerability scan on every build
  • Secrets moved out of the code and the repository
  • Abandoned libraries replaced with maintained ones
  • Static analysis that blocks whole classes of bugs

Compliance

Auditors, insurers and enterprise buyers now ask which PHP you run.

“Unsupported software in production” is one of the easiest findings to write up and one of the hardest to explain away. An upgrade turns it into a closed item, with evidence.

GDPR · Art. 32

“State of the art” security

Personal data must be protected with measures appropriate to the risk and the state of the art. Software with no security fixes is hard to defend to a regulator after a breach.

NIS2

Vulnerability handling and supply chain

Essential and important entities must manage vulnerabilities and the security of their suppliers. If you build or run software for one, expect them to ask you.

PCI DSS v4.0

Patches you can’t install

Req. 6.3.3 wants critical patches within a month of release; 12.3.4 wants a plan for end-of-life technology. Neither works on a PHP version that gets no patches.

ISO 27001 · SOC 2

Technical vulnerability management

Both expect known vulnerabilities to be identified and fixed in time. An end-of-life runtime shows up as a nonconformity or an exception you have to justify every year.

Cyber insurance

The question on the renewal form

Underwriters ask whether you run unsupported software. The honest answer can raise the premium, and a breach through known end-of-life software can complicate a claim.

Vendor reviews

Deals that stall in security review

Larger customers send security questionnaires before they sign. “PHP 7.4” in your answers is enough to slow a deal down, or end it.

Beyond security

The upgrade also pays you back.

Faster pages, smaller servers

PHP 8 runs typical web code markedly faster than PHP 5 and 7. We benchmark your app before and after, so you see your own numbers.

Hosting on your schedule

Hosts and cloud platforms retire old PHP versions or charge extra to keep them alive. Upgrade when you plan to, not when they force you.

Developers who want the job

Good PHP developers want modern PHP. Legacy code shrinks your hiring pool and raises the price of every change.

Integrations that just install

Current payment, email and API SDKs need PHP 8.1 or newer. On old PHP you write workarounds instead of features.

Fewer bugs, safer changes

Types, enums, readonly properties and static analysis catch mistakes before your users do. Changes get cheaper, not riskier.

Never a big project again

Once you’re current, staying current is routine: a small version bump each year instead of another rescue.

Sound familiar?

If two or more of these are true, the upgrade is already overdue. The good news: it is a solved problem, and we have solved it many times.

Talk to an engineer
  • Your host sent a “PHP version deprecated” email
  • A pen test or PCI scan flagged your PHP version
  • A customer’s security questionnaire asks about supported software
  • A library or SDK you need won’t install on your PHP
  • Logs are full of deprecation warnings nobody reads
  • Small changes get big quotes, or no takers
  • The developer who knew the code has left
  • Everyone is quietly afraid to touch the server

How we upgrade

No big bang. No feature freeze. No surprise downtime.

The same six steps, refined over many upgrades. Each one ends with something you can see and keep.

  1. 01

    Audit

    We map PHP and framework versions, extensions, dependencies and known CVEs, run static analysis and mark the risky corners of the code.

    You get: a written report, an upgrade path and a fixed price.

  2. 02

    Safety net

    Before touching code we wrap the flows that make you money in tests: login, checkout, billing, reports. Plus CI and a staging copy of production.

    You get: a test suite that stays with the app.

  3. 03

    Upgrade in steps

    Version by version, with automated refactoring and line-by-line review. The framework and libraries move with PHP. Your team keeps shipping.

    You get: small pull requests you can review.

  4. 04

    Harden

    We close the security issues the audit found: queries, passwords, sessions, headers, secrets and dependencies.

    You get: a security change log for your auditor.

  5. 05

    Release

    The new version runs side by side with the old one, then traffic switches over with a tested rollback plan. Zero downtime is the default, not an extra.

    You get: a quiet launch day.

  6. 06

    Stay current

    Optional care plan: monitoring, security patches and the yearly minor upgrade, so this never turns into a project again.

    You get: a supported app, permanently.

Toolbox

  • Rector
  • PHPStan
  • PHPCompatibility
  • PHPUnit · Pest
  • composer audit
  • Docker
  • GitHub Actions · GitLab CI
  • Sentry

Upgrade or rewrite?

Usually upgrade. We’ll tell you when it isn’t.

Your old code holds years of business rules and fixed edge cases. A rewrite throws that knowledge away and asks you to rediscover it in production.

Incremental upgrade · our default Full rewrite
Business logicKept, edge cases includedRediscovered, often the hard way
New features meanwhileKeep shippingUsually frozen
RiskSmall steps, each reversibleOne big switchover
First security winWith the first releaseAt the very end
CostYou pay for what changesYou pay to rebuild what you already own

Sometimes rewriting one part is the right call: a module nobody understands, or a front end past saving. If so, the audit says it plainly, with reasons and a price for both options.

Experience

We’ve done this many times. It shows in the details.

building on PHP
2008
applications upgraded
15+
oldest PHP we started from
5.6
MCL Medics OH · PHP 7.2 → 7.4 · CakePHP 2

Occupational health software holding medical records

Every user login depended on mcrypt encryption, which PHP removed in 7.2. Re-encrypting the stored data would have meant a maintenance window and no way back. We replaced it with a supported method that reads and writes the exact same format, proven byte for byte by tests.

Result: ~200 compatibility issues down to 0 errors. No database migration, no downtime, no password resets, rollback-safe.

Kwiziq · PHP 8.2 · CakePHP 2 + Symfony 7

Language-learning platform, kept current since 2014

A legacy CakePHP 2 app and a modern Symfony 7 app running side by side, serving French and Spanish learners. Upgraded version by version while the product kept shipping new features.

Result: when a critical PHP remote-code-execution flaw was published in October 2026, production was patched and hardened the same day.

Experio · legacy CakePHP → modern PHP

Enterprise software that configures network devices

An old CakePHP app controlled how network devices behave, and was sold to large corporations. It no longer met their corporate software standards. Here the audit pointed to a full rebuild on modern PHP and current coding standards.

Result: corporate-grade software again: compliant with client standards, hardened for security and faster in use.

“Axart has been crucial to the development of our (very complex) site. They always find an easy solution to projects that we assumed would be much harder.”
Justin Gospodarek · CEO, whizmo.com

Ways to start

Start small. Decide with facts.

Step 0

Free call

Free

30 minutes. Tell us what you run; leave with a risk read-out and a ballpark.

Fixed scope

Upgrade project

Fixed price

Scope and price come from the audit. Delivered in stages, released with zero downtime.

Ongoing

Stay-current plan

Quoted per app

Monitoring, security patches and the yearly upgrade, handled before anyone has to ask.

FAQ

Questions we hear on every first call.

Will the site go down during the upgrade?

No. The upgraded version runs next to the old one until it has proven itself, then traffic switches over. If anything looks wrong, we switch back in minutes.

Do we have to stop building features?

No. We upgrade in small, mergeable steps alongside your normal work, and agree with your team how the two streams meet.

Our code has no framework and no tests. Is that a problem?

That describes most of the apps we upgrade. Adding a safety net of tests is step two of the process for exactly this reason.

We’re still on PHP 5. Is it too late?

No. We go in stages through PHP 7.4 to PHP 8.5, keeping the app working at every stop. It’s more work than from 7.4, not a different kind of work.

How big a project is it?

It depends on the size of the code, how far behind it is and how many libraries need replacing. The audit answers it with a fixed scope and price, so there are no open-ended invoices.

Can our own developers do part of it?

Yes. Some clients want us to do it all, others want the plan, the tooling and a reviewer. The audit report works for both.

What about the server?

We can move you to a fresh, supported server or containers as part of the release, or hand a clear spec to your hosting team.

Find out what your old PHP is really costing you. Free.

Tell us your PHP version and framework. We reply within one business day.

Request a free 30-min call