Skip to content
Web Hosting

How to Choose the Right PHP Version and Handler in cPanel (MultiPHP and PHP Selector)

In this article11 sections

Every PHP site on a cPanel server runs on a PHP version, served by a PHP handler, with settings read from one or more ini files. When any of the three is not what you expect, you get errors that look unrelated: a plugin that works on one domain and breaks on another, a memory limit that will not change, or a command line that reports a different PHP than the website. This guide explains how cPanel’s MultiPHP Manager works, how it differs from CloudLinux’s PHP Selector, where your PHP settings are really stored and how to find out which version a site is actually running. On CloudLinux servers a domain is controlled by one tool or the other, and most confusion comes from mixing them.

The three decisions behind every PHP site

Decision What it controls Where you change it
PHP version Which PHP release runs the code, such as 8.2 or 8.3 MultiPHP Manager, or Select PHP Version on CloudLinux
PHP handler How the web server hands requests to PHP, such as PHP-FPM or a CGI-style handler The server administrator in WHM. You can switch PHP-FPM on or off per domain only if the administrator allows it.
PHP settings Memory limit, upload size, execution time and error display MultiPHP INI Editor, or the options screen of Select PHP Version

Option A: MultiPHP Manager

MultiPHP Manager is the standard cPanel tool, available under Software in cPanel on servers that use EasyApache 4. It assigns a PHP version to each domain and subdomain separately, so one account can run an older application beside a modern one.

  1. Open cPanel, Software, MultiPHP Manager.
  2. Tick the checkbox next to the domain.
  3. Choose a version from the drop-down on the right.
  4. Click Apply.

A domain set to Inherit uses the default chosen for the account or server instead of a fixed version. If you see a PHP-FPM option on the same page, your administrator has enabled it. PHP-FPM keeps a pool of worker processes ready to take PHP requests, which helps with busy sites, and cPanel runs a separate pool for each domain. cPanel recommends activating Apache PHP-FPM only when the server has at least 2 GB of RAM available, or around 30 MB of RAM per domain, because every pool uses memory. The administrator decides this, and if the option is missing you cannot add it yourself.

Option B: CloudLinux PHP Selector

On CloudLinux servers, cPanel shows a second tool called Select PHP Version under Software. It lets you pick a PHP version for your account and then tick the PHP extensions you need from a long list, which is something MultiPHP Manager does not offer to account owners. The same screen has a switch to PHP options, where you can set values such as memory_limit, upload_max_filesize, post_max_size, max_execution_time, max_input_time, display_errors and error_reporting. Changes there are saved automatically.

The Selector needs CageFS to be switched on for your account, which is a CloudLinux feature that gives each account its own isolated view of the file system. If the tool tells you to initialize CageFS, or to enable it for your user, those are tasks for the administrator, not for you.

The My Domains tab is where the two tools meet. It lists each domain and shows whether it uses PHP Selector or MultiPHP Manager, with a button to switch. When you choose Use PHP Selector for a domain, its MultiPHP version is set to the system default and PHP-FPM is turned off for that domain. If PHP-FPM was enabled, only the administrator can turn it off. The practical rule: each domain should be controlled by one tool, so decide first, then make your changes in that tool.

Which one should you use?

You need Better choice
Different PHP versions on different domains of one account MultiPHP Manager
PHP-FPM pools for a busy site MultiPHP Manager, if the administrator has enabled PHP-FPM
To turn individual PHP extensions on or off yourself PHP Selector
One consistent setup for the whole account PHP Selector
Simple settings such as memory limit or upload size Either, in the tool that controls the domain

Where your PHP settings are really stored

With MultiPHP INI Editor, open cPanel, Software, MultiPHP INI Editor, choose a domain or your home directory, and use Basic Mode for common directives or Editor Mode to edit the text directly. The editor writes to a php.ini file, a .user.ini file and your .htaccess file, each only for the directives that file type supports. The three files are therefore not always identical, and that is normal. Leave the sections marked as generated by cPanel alone and make changes through the editor, because manual edits to those blocks are overwritten. To go back to default settings, delete the domain’s php.ini file.

A second source of confusion is the command line. The ini file used by SSH or cron can differ from the one the website uses, which brings us to the next point.

Check which PHP your site is really running

Create a file named phpinfo.php in the site’s document root containing one line:

<?php phpinfo();

Open it in the browser and read the PHP version, the loaded configuration file and the handler, which phpinfo calls the Server API. Delete the file as soon as you are done, because it exposes configuration details to anyone who finds it. Then compare with the command line, where php is often a different version:

php -v
ls /usr/local/bin | grep ea-php
/usr/local/bin/ea-php83 -v

Replace ea-php83 with a version from your own list. For Composer, Artisan and cron jobs, call the matching binary by its full path so they use the same PHP as the site. On CloudLinux servers that use alternative PHP, the binaries live under /opt/alt/.

Changing a PHP version without breaking the site

  1. Take a backup of the files and the database first.
  2. Test on a staging copy or a subdomain before the live site.
  3. Change one domain at a time, and read the error log right after.
  4. Update plugins, themes and Composer packages that need the newer version, and check that the extensions you rely on are enabled for it.
  5. If something breaks, set the previous version again in the same tool. The change is reversible.

Run versions that still receive security fixes. An old PHP version keeps a site working at the cost of unpatched flaws, so treat it as a temporary step while you update the application.

Troubleshooting the usual conflicts

Symptom Likely cause What to check
Composer says it needs a newer PHP, but the site runs fine Command line uses a different version from the site Use the full PHP path from the previous section.
A php.ini change has no effect The domain is controlled by the other tool Check the My Domains tab, then edit settings in the tool that controls the domain.
Extension missing Not enabled for that PHP version Tick it in Select PHP Version, or ask your host on a server without the Selector.
White page or 500 error after a version change Plugin, theme or code incompatible with the new version Read the error log, then switch back and update the code.
No PHP-FPM option Administrator has not enabled it Ask the host. You cannot enable it yourself.
Use PHP Selector is greyed out CageFS not initialized or not enabled for your user Ask the administrator to enable CageFS.

For server administrators

Some points from the documentation worth checking on your own servers:

  • PHP Selector needs CageFS. The Selector tab in CloudLinux Manager has a Run diagnostic button for the common faults.
  • A PHP handler that does not support PHP Selector, such as one running under mod_ruid2, is a known cause of failures. Installing mod_suexec and then running cagefsctl --force-update is the documented fix.
  • The MultiPHP system default should be an ea-php version, or the Selector reports an error.
  • cPanel does not support the DSO handler with PHP 8.0 and later.
  • Every domain with PHP-FPM gets its own pool, so check memory before enabling it for many domains.

When shared hosting limits get in the way

If you need your own PHP-FPM pool settings, a PHP version the server does not offer, or non-standard extensions, a VPS or dedicated server gives you full control. For ordinary sites, a cPanel hosting plan with MultiPHP or the PHP Selector covers most needs without any server work.

Related guides: deploying Laravel on cPanel shared hosting, running Node.js and Python apps with the CloudLinux Selector and hosting several PHP apps on one cPanel account safely. If you move to your own server, see hosting multiple websites on one VPS with Nginx.

The PHP version and handler decide how much of the account’s share each request uses, so they are the first place to look when a site hits a limit. If that happens, read how to fix the 508 Resource Limit Is Reached error on cPanel. To keep the account locked down while you test versions, see how to keep your cPanel account and sites secure.

Frequently asked questions

Can I run different PHP versions on different domains in one cPanel account?

Yes. In MultiPHP Manager, each domain and subdomain can have its own version. On CloudLinux, a domain you switch to PHP Selector uses the Selector’s version instead.

Is PHP-FPM always faster than other handlers?

Not always. It helps most on busy sites because workers stay ready, but each pool uses memory, so it pays off only on servers with enough RAM for the domains using it.

Why does my PHP version change after I switch to PHP Selector?

Switching a domain to PHP Selector sets its MultiPHP version to the system default and turns PHP-FPM off. Choose the version you want in Select PHP Version afterward.

Where do I change memory_limit or upload size?

In MultiPHP INI Editor if MultiPHP controls the domain, or in the options screen of Select PHP Version if the Selector does. Editing the file by hand is the less reliable route.

The short version: choose one tool per domain, set the version and the settings there, and verify with phpinfo and the full PHP path on the command line.

Share this guide