Core Panel

How to Run Multiple PHP Versions on One Server Safely

CP
Written by Core Panel Team Product and documentation team · Published Sep 17, 2026 · 8 min read
How to Run Multiple PHP Versions on One Server Safely
On this page · 7 sections

Running more than one PHP version on the same server is often necessary during a migration. A current application may be ready for the latest supported release while an older site still depends on a legacy runtime. The goal is not simply to keep both versions installed; it is to isolate them per website, test every change, and retire unsupported branches on a controlled schedule.

Why multiple PHP versions are useful

A server-wide PHP upgrade can create unnecessary risk. Themes, plugins, frameworks, extensions, and custom code do not always become compatible at the same time. Per-site PHP-FPM selection lets each website move independently, so a modern application can adopt a supported branch without forcing an immediate change on every legacy workload.

This approach is especially useful when you are:

  • migrating websites from another hosting control panel;
  • upgrading WordPress, Laravel, Symfony, or another PHP application;
  • testing application compatibility before a production cutover;
  • consolidating several customer websites onto one managed server.

How per-site PHP-FPM isolation works

Each PHP website sends requests to its selected PHP-FPM branch. The web server routes traffic for that site to the appropriate runtime, rather than applying one PHP version globally. In Core Panel, each PHP website can select an installed PHP-FPM branch independently. End-of-life branches are clearly marked, making them useful as temporary migration bridges while new sites remain on a currently supported release.

Runtime separation reduces upgrade blast radius, but it does not replace application testing. A website may still rely on a missing extension, deprecated language behavior, a particular configuration value, or a scheduled task that uses a different PHP executable.

A safe migration plan

1. Inventory every PHP workload

Record each website, its current PHP version, framework or CMS version, required extensions, database dependencies, cron jobs, background workers, and business owner. Flag unsupported PHP branches and public-facing applications first. This inventory becomes the migration queue and prevents forgotten workloads from remaining on legacy runtimes indefinitely.

2. Install and verify the target branch

Install a currently supported PHP branch through your server administration workflow. Confirm that the required extensions are available and that upload limits, memory limits, execution timeouts, and other settings match the application's needs. Avoid copying an old configuration wholesale; review each exception and keep the target runtime as close to secure defaults as practical.

3. Create a recoverable test point

Take a fresh, verified backup before changing the production runtime. For an important site, test the backup by restoring it to an isolated location. A backup is only useful when its contents, credentials, database, and restore process have been validated.

4. Test the application on the new version

Use a staging copy or a maintenance window. Check the home page, authentication, forms, uploads, checkout flows, email delivery, administration screens, API integrations, cron jobs, and background workers. Review both application logs and PHP-FPM logs for warnings and deprecations that may not be visible in the browser.

5. Switch one website at a time

Change the selected PHP-FPM branch for a single website, then perform a short smoke test. Keep the previous branch installed during the observation window so you have a defined rollback path. Avoid switching many unrelated sites at once; small batches make failures easier to diagnose and contain.

6. Monitor after cutover

Watch error rates, response times, memory use, worker saturation, logs, and customer-reported issues. Compare the new baseline with the period before the change. A technically successful page load is not enough if queues, scheduled jobs, or high-traffic endpoints fail later.

7. Retire the legacy branch

Once every dependent website has moved and the rollback window has closed, remove the unsupported branch. Document the completion date and the evidence used to approve the migration. Leaving an end-of-life runtime installed forever turns temporary compatibility into permanent security debt.

Per-site upgrade checklist

  • Confirm the current and target PHP versions.
  • Verify application and dependency compatibility.
  • Match only the extensions and settings the site actually needs.
  • Create and validate a backup.
  • Test web requests, CLI tasks, cron jobs, queues, and integrations.
  • Schedule a low-risk cutover window.
  • Define the rollback trigger and responsible operator.
  • Monitor logs and performance after the switch.
  • Record the result and plan retirement of the old branch.

Common mistakes to avoid

Treating the change as server-wide. Per-site selection is valuable because applications can move independently. Do not recreate the risk of a global upgrade by changing everything in one maintenance window.

Ignoring command-line PHP. A website may use one PHP-FPM branch while cron jobs or deployment scripts call a different CLI binary. Test both execution paths.

Keeping an end-of-life version without an exit date. Legacy support should have an owner, a reason, compensating controls, and a deadline.

Skipping extension checks. Application code may be compatible with the target language version but still fail because a required extension is missing or configured differently.

Having no measured rollback plan. Decide in advance which errors, latency changes, or failed business flows will trigger a return to the previous branch.

Managing PHP versions with Core Panel

Core Panel brings PHP branch management and per-website runtime selection into the same control plane used for websites, SSL, databases, backups, monitoring, and scheduled jobs. Administrators can keep a legacy branch available temporarily for migration while assigning supported versions to new or upgraded sites.

For an overview of supported application runtimes, visit the Core Panel features page. For implementation details, review the website deployment guide and system settings documentation.

Final recommendation

Multiple PHP versions are safest when they support a deliberate transition, not indefinite postponement. Isolate runtimes per website, test the complete application path, preserve a verified rollback point, monitor the cutover, and remove obsolete branches as soon as the migration is complete. That gives teams flexibility without losing control of security and operational risk.

Related posts

Stay in the loop

New posts and release notes, delivered to your inbox. No spam.

Ready to switch?
14-day free trial
Get Started