BlogIncident databaseEventsAbout

Business continuity · Legacy PHP

Disaster Recovery for Legacy PHP Applications

A live, isolated copy of your legacy PHP application, ready to serve users the second the primary goes down. No restore, no data loss, no infected backup.

PHP 5 and 7variousLast updated
0 RTO
Recovery time
0 RPO
Data lost
Isolated
Ransomware reach

Definition

What is disaster recovery for Legacy PHP Applications?

Disaster recovery for Legacy PHP Applications is the set of systems and decisions that keep a legacy PHP application serving users when its primary environment fails.

A traditional plan restores the application from a backup onto rebuilt infrastructure. That takes hours or days and loses everything since the last snapshot. A live replica approach keeps a second, current copy of the application running and isolated, so failover is a switch rather than a rebuild.

The two approaches answer different questions. A backup answers "can we get the data back?". A live replica answers "can users keep working while we deal with this?". For a legacy PHP application the business depends on, the second question is the one that costs money every minute it stays unanswered.

Why now

Why legacy PHP applications need disaster recovery now

Legacy PHP Applications is stable software with a large ecosystem, and that ecosystem is where the risk lives. The application depends on hosting, dependencies and integrations that each change on their own schedule, and any of them can take it down.

The facts that matter for a legacy PHP application today:

  • PHP 7.4 reached end of life in November 2022 and PHP 8.0 in November 2023. Any application pinned to them runs on an unpatched runtime.
  • Framework majors retire too: Laravel 5.x and 6.x, CodeIgniter 3, Zend Framework 1 and 2, Symfony 3 and 4 and CakePHP 2 no longer receive security releases.
  • Custom applications rarely have the test coverage needed to upgrade safely, so they stay where they are and accumulate risk.

Failure modes

Where legacy PHP applications actually fail

Disaster recovery planning tends to imagine fires and floods. Real legacy PHP outages are more mundane and more frequent. The failure modes that a plan for Legacy PHP Applications has to cover:

  • A vulnerability in the runtime, the framework or a Composer dependency with no fix for the version in use.
  • A hosting provider or operating system upgrade that removes the PHP version the application needs.
  • A failed server with no reproducible build and the original developers gone.
  • Ransomware encrypting the application, its database and its backups.
  • The backup itself: stored on the same host or account, encrypted alongside production, or restored with the intrusion still inside it.

The replica

Why a live replica beats restoring legacy PHP from backup

Four things change when the application has a live, isolated copy instead of a snapshot on a shelf.

Zero recovery time, because nothing is recovered

The replica is already running. When the primary fails, users are switched to the copy in seconds. There is no rebuild, no restore window and no scramble to find the person who knows how the application was configured.

Zero data loss, because the copy is current

The replica follows the primary continuously rather than nightly. Changes made on the replica during an outage are captured and reconciled back when the primary returns.

Ransomware cannot follow

The replica is isolated from the primary's hosting account, network and credentials. An attacker who owns production has no path into the copy, and you never restore from a snapshot that might carry the infection with it.

The vendor's outage is not your outage

When a hosting provider, a cloud region or a dependency fails, the replica sits outside that blast radius. Users keep working while someone else fixes their problem.

How it works

How the Jestr replica works for a legacy PHP application

Jestr does not re-implement Legacy PHP Applications. It runs a copy of your actual application, kept current and kept apart.

  1. Jestr builds a live copy of the application

    Jestr replicates the legacy PHP application as it actually runs: the application, its data and its configuration, at the exact version and with the exact dependencies the primary uses. Nothing is re-implemented, so what users see on the replica is the application they know.

  2. The copy stays current and stays isolated

    The replica follows the primary continuously, at a known-good state, so an update that breaks production does not break the copy. It runs on Jestr's side of the outage with no shared credentials, network or identity, so a compromise of the primary stops at the primary.

  3. When the primary fails, you switch

    One action moves users to the replica. They open the same pages, sign in and keep working. Changes are captured on the replica. The switch works even when your own network is the thing that is down.

  4. When the primary is back, you reconcile and switch back

    Changes made on the replica are reconciled into the restored primary. You choose when to switch back. Nothing was lost and no backup was restored.

What the replica captures for Legacy PHP Applications

  • The application code, configuration and the exact PHP runtime and extensions it needs.
  • The database and file storage, kept current with the primary.
  • Integrations and scheduled jobs, so the application does work rather than displaying a frozen copy.
  • Isolation from the primary's network and credentials, so a compromised application cannot reach the copy.

Side by side

Backup and restore vs a live legacy PHP replica

The same outage, handled two ways.

Traditional backup and restore compared with a live Jestr replica of a Legacy PHP Applications application.
DimensionTraditional backup and restoreLive Jestr replica
Time until users are served againHours to days: provision, restore, reconfigure, testSeconds: the replica is already running
Data lostEverything since the last snapshot, often a full dayNothing: the replica is current, and changes made during the outage are reconciled back
RansomwareBackups often sit in the blast radius, and a restore can bring the infection backThe replica is isolated; you switch to it instead of restoring into the compromise
Vendor or hosting outageYou wait for the providerThe replica sits outside the provider's failure domain
RehearsalRarely tested, because a full restore is disruptive and slowSwitching to the replica is routine and can be rehearsed any time
Who does the work at 3amYour team, from a runbook that may be out of dateThe switch is one action; the copy was built and kept current in advance

FAQ

Frequently asked questions

Does Jestr replace our legacy PHP backups?

No. Keep backups for archives, audits and long-term retention. Jestr replaces the part of the plan that backups are bad at: keeping the application available while the primary is down, without a restore window and without data loss.

Can users sign in and work on the replica, or is it a static copy?

It is the real legacy PHP application, not a snapshot of its pages. Logins, forms and integrations work. Changes made during the outage are captured and reconciled when the primary returns.

How is ransomware kept out of the replica?

The replica shares nothing with the primary that an attacker could use: no credentials, no network path, no hosting account. Replication is one-way and validated, so an encrypted or tampered primary does not propagate. You switch to a clean copy instead of restoring into the compromise.

How fast is failover?

Seconds. The replica is already running and current, so failover is the act of pointing users at it. There is no provisioning, restoring or reconfiguring in the critical path.

Does this work with managed legacy PHP hosting?

Yes. The replica sits outside the hosting provider, whoever it is. That is the point: when the host has a bad day, the application does not.

Talk to us

Keep your legacy PHP application running through the worst day.

Tell us about your Legacy PHP Applications application and we will show you a failover. One reply, from a human. No newsletter.

Or request early access and browse the incident database.