Legacy PHP rescue · US · UK · Canada

Hire PHP Developers for Legacy Code

Hire PHP developers for legacy code without committing to a rewrite first. An inherited application, a PHP 5.x or 7.x codebase, or something nobody left documentation for: it starts with a two-day audit and a written answer to the only question that matters, which is whether to patch it, upgrade it, or replace it a module at a time.

2 days
audit before you commit to anything
from $22
per hour, published
10 days
risk-free before you pay
What you get before any invoice IN THE CONTRACT
The audit report is yours
Fixed fee, written, and yours to take to another team if you would rather.
We will tell you to leave it alone
If it earns, works, and nobody needs to change it, that is what the report says.
Nothing is rewritten by surprise
No engineer here refactors your codebase into their preferred shape on a Friday.
NDA before repository access
Yours or ours, signed before anyone opens the code.
IP assigned on day one
Yours on commit, not on final payment.
Ten working days risk-free
On real tickets in your tracker. Walk away and owe nothing.
Every seniority band and engagement model is priced in full on one page. See rates →

Send read access, get our findings inside one business day

The real question

Patch it, upgrade it, or replace it

Nobody hiring a PHP developer for legacy code is really shopping for a developer. They are shopping for an answer to this. Here are the three, with the timeline and the honest risk of each, and the two-day audit tells you which one is yours and what it costs.

Patch and hold

Security fixes, dependency updates and the minimum PHP bump that gets you back onto a supported version. Nothing else changes.

TIMELINE
Ongoing retainer
DOWNTIME
None
THE RISK
The gap widens each year. Every PHP release makes the eventual upgrade slightly larger and the hiring pool slightly smaller.
Right when the application earns, works, and you expect to replace it within two years.

Strangle and replace

New modules behind the old router, one at a time, until nothing routes to the original. Never a big-bang rewrite. How a strangler migration runs, worked through on a CodeIgniter app.

TIMELINE
14-28 weeks
DOWNTIME
None, cut over per module
THE RISK
Highest cost, and it needs product decisions from you the whole way through rather than at the start.
Right when you are still building features on this app in five years, or hiring has become the bottleneck.

If the answer is "leave it alone and patch it", that is what the report will say. It will have cost you two days rather than a quarter, and you are free to take it to somebody else.

Book the audit

Before you spend anything

How bad is it, really?

Five things we check first on every inherited PHP application. If you recognise two or more of them, the audit is worth more to you right now than a developer is.

Send us read access to the repository and we will run these checks ourselves. No form and no call first: a reply with what we found inside one business day.

Running PHP 7.4 or older

This is a live security exposure today, not a technical-debt item for next quarter. It gets fixed first, whatever you decide about the rest.

No test suite, and deploys happen over FTP

The tests are the project. You cannot safely change code that nothing verifies, and every estimate that ignores this is wrong.

Nobody who wrote it still works there

Two days of documentation and a runbook save more than two months of archaeology, and they are useful whoever does the work next.

Business rules living in includes/ or a 4,000-line controller

This is where the real cost hides. Not the framework version, and not the line count.

It handles money, bookings or stock

Strangler migration, module by module, whatever anyone quotes you for a rewrite. The blast radius decides the method.

Engagement models

Four ways to hire legacy PHP developers

Pick by how much certainty you need. Every model is the same engineers, the same review standards and the same published rate.

The audit

Two days, fixed fee, a written report. The usual way this starts and it commits you to nothing.

Priced on the rates page
Fixed fee, quoted up frontYours to take elsewhereReply within one business day

Hourly

A specific fix, a PHP compatibility bump, or a security patch. Billed in 15-minute blocks.

Priced on the rates page
No minimum commitmentWeekly invoicingSame-day start possible

Patch retainer

Security fixes and dependency updates on an application you are not otherwise changing.

Priced on the rates page
Critical patches in 5 daysMonthly written summaryRolls month to month

Straight answer

When legacy PHP is worth modernising, and when it is not

Start from the least fashionable answer: if the application is stable, earning money, and nobody needs to change it much, leaving it alone is a legitimate engineering decision. An old application on a supported PHP version, with a patch retainer behind it, can run for years. Modernisation is not a virtue in itself, and any agency that opens with "you need to rewrite this" has told you something about their sales model rather than about your codebase.

What forces the decision is rarely the framework. It is a PHP version going out of support, a dependency that no longer installs, a payment provider deprecating the API you integrated in 2016, or the one person who understood the codebase leaving. Those are the moments to spend money, and the order matters: get onto a supported PHP version first, then decide about the framework. Doing both at once is how migrations end up abandoned at sixty per cent.

When migration is right, it should never be a rewrite. We run the strangler pattern: one router in front, modules moved across one at a time, both frameworks live together for as long as it takes, with experienced Laravel developers building the replacement modules. Every week ends with something shipped and something deletable. A big-bang rewrite asks you to fund six months with nothing in production at the end, and to trust that the new system covers a decade of undocumented business rules. It usually does not.

One more thing worth knowing before you take quotes: the cost is almost never in the controllers. It is in the custom libraries doing what a framework should do: a hand-rolled ORM, a bespoke auth system, a PDF generator someone wrote in 2014. Any estimate that has not opened application/libraries, the folder where a CodeIgniter 3 application keeps them, or its equivalent elsewhere, is a guess, which is exactly why we sell two days of looking before we sell anything else.

If the audit says leave it alone, the report says leave it alone. Selling a migration the business did not need is the fastest way to lose a client, and we would rather keep one.

The alternatives

What you are actually choosing between

OURS
MARKETPLACE
IN-HOUSE HIRE
What you commit to
Two-day audit
Per contract
Salary + severance
You find out the real cost
Before you commit
After you commit
After they start
Time to first commit
5 business days
1-3 weeks screening
6-14 weeks
Risk-free period
10 working days
Escrow milestones
90-day probation
Told not to do the work
In writing, if so
Rarely
Never
IP assignment
Day one, in writing
Varies by contract
Employment contract
Senior code review
Included
None
Your team
If they leave
Replaced in 5 days
You start again
You start again

Marketplace and in-house figures are typical US mid-to-senior PHP ranges for 2026, including employer costs. Ours are the published rates.

Capabilities

What our legacy PHP developers actually do

Eight things owners of legacy PHP applications ask us for most. Six of the eight are maintenance and upgrade work rather than replacement, which is the honest shape of this.

01 2 days, fixed fee

Legacy code audit and written report

What the real risks are, what an upgrade would cost, and what to leave alone. Delivered as a document with a risk register, not a call. Yours to take to another supplier if you would rather.

Audit reportRisk registerPHPStanRunbook
1 day
Reply with what we found, from read access to the repository
02 4-12 weeks

PHP 5.x and 7.x upgrades to 8.4

Static analysis first, then Rector in small passes, branch by branch, live throughout.

RectorPHPStan L8
03 3-8 weeks

A regression suite for code that has none

Characterisation tests around current behaviour first, so you can change things without guessing.

PestPHPUnit
04 Retainer

Security patching for unsupported stacks

Dependency updates, known-CVE fixes and a WAF in front while the longer decision gets made.

CVE trackingWAFBackups
05 14-28 weeks

Strangler migration to Laravel

Module by module behind the existing router. Every week ends with something shipped.

StranglerLaravel 12
06 1-3 weeks

Getting an undocumented codebase understood

A dependency map, the data model as it actually is rather than as it was designed, an environment somebody new can run on their first morning, and a runbook for the deploys that currently live in one person’s head.

DocsDockerRunbook
Day 1
A new engineer can run it locally by the end of their first day
07 1-3 weeks

Performance work on an old database

Query profiling, indexes, and caching, measured before and after, in writing.

EXPLAINRedis
08 2-6 weeks

Getting off a dead dependency

An abandoned package, a payment gateway that sunset its API, a PHP extension with no 8.x build.

ComposerAdapters

Not sure it is worth saving?

That is a fair question and the audit answers it. Sometimes the report says rebuild, and we will tell you that even though it is the harder sale.

Ask an engineer

Tech stack

Current versions, not a wish list

What is in production for our clients this quarter. We will work in older versions too, most rescue jobs start there.

The upgrade toolchain

PHP 8.3 / 8.4 Rector PHPStan level 8 Psalm Pest / PHPUnit Composer

What we usually find

PHP 5.6 / 7.x CodeIgniter 3 Laravel 5-8 Zend / Symfony 2 WordPress + custom No framework at all

Where it usually goes

Laravel 12 MySQL 8 Redis Docker GitHub Actions Staying where it is

The engineers

The people who would be on your standup

Legacy PHP is a speciality, not a punishment posting. These engineers have spent years in codebases nobody documented, and you interview them before anything is agreed.

Manoj Lead · 11 yrs · CodeIgniter & legacy

Strangler migrations off dead frameworks, and the patch retainers that keep an unsupported stack secure for clients who are not moving yet.

Rector Laravel 12 CodeIgniter 3
FREE IN 3 WKS Migrations & upkeep GITHUB ON CALL
Sumit Mid · 4 yrs · PHP & QA

Writes the regression tests that make changing a ten-year-old codebase survivable. On legacy work this is the first hire, not the last.

Pest PHPCS PHP
FREE IN 4 WKS The safety net GITHUB ON CALL
Pankaj Mid · 5 yrs · PHP & APIs

Integrations specialist. Usually the person who replaces the payment gateway that sunset its API two versions ago.

Stripe REST Queues
FREE NOW Dead dependencies GITHUB ON CALL
Rakesh Senior · 8 yrs · Laravel & Vue

Takes the modules that come out of a strangler migration and builds them properly on the other side.

Laravel 12 Vue 3 MySQL
FREE IN 2 WKS What replaces it GITHUB ON CALL

5 more engineers, with full profiles, shipped work and GitHub history. Meet the whole team →

How we work

What a legacy engagement includes by default

Legacy work has its own defaults, because the risk sits in different places than it does on a new build.

You do not have to take any of this on trust. The first ten working days are risk-free, and every rate is published in full.

See what is included
Order
Safety net before any change
Characterisation tests and static analysis come before the first line is touched. The projects that go wrong skipped this step, not a tool.
Method
Branch by branch, never a big bang
Each step is deployable and reversible. Risk moves out of one cutover day and into small increments.
Security
An unsupported PHP is fixed first
Whatever you decide about the architecture, running on a version that receives no security fixes is not a decision you get to defer.
Honesty
We will tell you not to do it
If the application works, earns, and nobody needs to change it, a patch retainer costs a fraction of a migration, and the report will say so.

How it works

From first email to a developer on your standup

Twelve working days end to end, and no money changes hands until you have seen the work.

  1. Day 0

    You send read access, or just describe it

    A repository link and what worries you. No form to fill in and no call before anyone has looked at anything.

  2. Day 1

    We reply within one business day

    What we found, whether the audit is even worth buying, and roughly which of the three answers is likely yours.

  3. Week 1

    The two-day audit, if you want it

    Fixed fee, quoted before it starts, and it ends in a written report rather than a proposal.

  4. Week 1

    You interview the engineer

    A named person with the date they come available. You decide, not us.

  5. Week 2

    Ten working days risk-free

    Real tickets in your tracker. Read the pull requests. Walk away at the end and owe nothing.

Why India

Why hire PHP developers for legacy code in India

This is the one place where India is not just cheaper, it is genuinely deeper. PHP has been the backbone of Indian software services for twenty years, which means a very large number of production applications written across that whole period, and the engineers who kept them running. Maintaining somebody else's ten-year-old codebase is unglamorous work that few developers anywhere want; the difference here is that it is a recognised speciality with a hiring pool behind it rather than a job nobody will take. What that costs against a local hire is worked through in PHP developer hourly rates, India vs the US.

YOUR WORKING DAY, AND OURS

New York
Pune
4 HRS OVERLAP
What the contract says
IP assignment on day one
Everything written for you is yours on commit, not on final payment. Assignment clause, not a licence.
NDA before repository access
Yours or ours, signed before anyone is added to your GitHub organisation.
The audit report is yours
Fixed fee, written, and yours to take to another supplier if you would rather. It is not a sales document.
Thirty days notice to stop
Month to month after the trial. No annual minimum and no exit fee.

FAQ

Questions buyers ask before the first call

If yours is not here, email it. We publish the answer rather than saving it for a sales call.

Can I hire a PHP developer for legacy code nobody documented?

That is the usual case rather than the exception, and it is why this starts with an audit instead of an estimate. Undocumented is a known quantity: the first work is a dependency map, the data model as it actually is, and an environment a new engineer can run on their first morning. What is not a known quantity is what the business rules are meant to be, and that part needs somebody on your side who remembers, which is the half hour a day our guide on briefing an offshore team is about.

Our application runs on PHP 5.6. Is that still fixable?

Yes, and it is common. PHP 5.6 stopped receiving security fixes years ago, so the first question is not whether to modernise but how exposed you are today. The mechanical part of a 5.6 to 8.4 upgrade is largely Rector and static analysis; the cost is the regression suite, because there almost never is one. Budget most of the estimate there and treat the version jump as the cheap half.

How much does it cost to hire legacy PHP developers?

The same published rates as everything else: from $22 an hour, with every band on the rates page. Legacy work usually lands on the senior band at $30 rather than the mid one, because the expensive part is judgement about what not to touch. The two-day audit is a separate fixed fee, quoted before it starts.

Will you rewrite it rather than fix it?

Not unless the report argues for it and you agree. A rewrite is the most expensive answer and the one most often reached for, usually because reading somebody else’s code is less enjoyable than writing your own. The default here is upgrade in place, and the strangler pattern when replacement is genuinely right.

Can you take over from the developer who built it?

Yes, and we would rather do it with a handover than without one. If they are still contactable, a paid week of their time is the cheapest thing you will buy in this whole project. If they are not, that is what the audit and the runbook are for. After the handover it is the same month-to-month arrangement as when you hire PHP developers in India for new work.

Who owns the code and the IP?

You do, assigned from the first commit rather than on final payment. Work happens in your repository and your cloud accounts, so there is nothing to hand over at the end.

What if the audit says the app is fine?

Then it says so, you have paid for two days rather than a quarter, and you owe us nothing further. We would rather write that report than sell a migration the business did not need, because the second one comes back.

How quickly can somebody start?

Usually within five business days, and same-week for a security patch on an exposed version. Each engineer profile carries the date they come available.

Talk to an engineer

Tell us what needs building

You get a reply within one business day from someone who has migrated this exact kind of application, with a named engineer, their rate and their start date. No discovery fee, no obligation.

Ten working days risk-free before you pay

NDA signed before repository access

Or book a 20-minute call at a time you pick

We never share your details, and we do not run a mailing list.

Audits start at two days · report in writing 10 working days risk-free
Reply within one business day Get an estimate