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 versionSymfony, Laravel & custom codeZero-downtime releases
$ php -v
Which PHP version runs your app?
Unsupported
No security fixes since 31 Dec 2018.
Almost eight years of PHP vulnerabilities that will never be patched, plus a framework and libraries just as old.
We have upgraded apps from PHP 5.6 before. We go in stages through 7.4 to PHP 8.5.
Unsupported
No security fixes since 2019–2021.
Five years or more without patches, depending on the exact version.
A well-trodden path: through 7.4 to PHP 8.5, without stopping the business.
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.
Unsupported
No security fixes since 26 Nov 2023.
Close to three years without patches, despite feeling modern.
Usually a short, low-risk project to PHP 8.5.
Unsupported
Security fixes ended 31 Dec 2025.
Ten months without patches, and the list grows with every PHP release.
Usually a short, low-risk project to PHP 8.5.
Ending soon
Security fixes end 31 Dec 2026.
About ten weeks left. After that, 8.2 is in the same position as 7.4.
Plan the move to 8.5 now, while it is calm.
Supported
Supported until Dec 2027 (8.3) to Dec 2029 (8.5).
You are current. Your framework and libraries may not be: worth a check.
Our stay-current plan keeps you here with one small step a year.
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
2014201820222026today2030
No security fixesSecurity fixes ending soonSupported
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
✓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.
We’re engineers, not lawyers. What we hand over is evidence: a before-and-after version and dependency report, the vulnerability audit and a change log your compliance lead or auditor can file.
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.
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.
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.
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.
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.
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.
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 logic
Kept, edge cases included
Rediscovered, often the hard way
New features meanwhile
Keep shipping
Usually frozen
Risk
Small steps, each reversible
One big switchover
First security win
With the first release
At the very end
Cost
You pay for what changes
You 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.
Most clients start here
Upgrade audit
Quoted per app
Full inventory, CVE scan, static analysis, upgrade path and a fixed quote. The report is yours, even if someone else does the work.
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.