Change PHP version and extensions in cPanel
Each site can run the PHP version it was built for, with the extensions and limits it needs. Switching takes seconds and is just as quick to undo. New accounts start on PHP 8.3; check what your theme, plugins or app support before you move.
Before you start
- Your cPanel login, or open cPanel straight from the client area.
- The PHP versions your app supports, from its documentation or the "Requires PHP" line of each WordPress plugin.
- For a live business site, a fresh backup or a staging copy to try the change on first. Every WordPress plan includes staging.
Which cPanel tool does what
cPanel has three PHP tools under cPanelSoftware. Most people only ever need the first one.
| Tool | Use it to | Applies to |
|---|---|---|
| Select PHP Version | Choose the version, tick extensions and change limits such as memory_limit | Every domain set to inherit |
| MultiPHP Manager | Give one domain a different version from the rest of the account | The domains you tick |
| MultiPHP INI Editor | Change limits for a domain set to its own version in MultiPHP Manager | The domain you pick |
The rule that explains most confusion: Select PHP Version only affects domains whose MultiPHP Manager setting is "inherit", which is the default. Once you pin a domain to a specific version in MultiPHP Manager, it stops following Select PHP Version, including its extensions and options.
Which version to pick, as of October 2026:
| Version | Upstream support | Our advice |
|---|---|---|
| 8.5 | Newest release. Full support until 31 Dec 2027, security fixes until 31 Dec 2029 | Only when your app and every plugin list support; try it on staging first |
| 8.4 | Full support until 31 Dec 2026, security fixes until 31 Dec 2028 | New sites, once your plugins list support |
| 8.3 | Security fixes only, until 31 Dec 2027 | The default for new accounts and the safe choice |
| 8.2 | Security fixes only, ending 31 Dec 2026 | Plan your move to 8.3 now |
| 8.1 | End of life since 31 Dec 2025 | Only for code you can't update yet |
Step 1: Switch the PHP version
-
Open Select PHP Version
Go to cPanelSoftwareSelect PHP Version. The top of the page shows the Current PHP version for the account.
PHP SelectorExtensions · OptionsCurrent PHP version8.3 ▾Applies toDomains set to inheritbcmathgdimagickintlioncube_loaderopcacheredissoapzipSet as currentReset to defaultExample. The list of extensions is longer than this; ticked boxes are enabled for the selected version. -
Choose a version and apply it
Pick the version from the drop-down and click Set as current if your screen shows that button; on newer screens the change applies as soon as you choose. Reload your site in a private window and click through a few pages.
-
Need one domain on a different version?
Open cPanelSoftwareMultiPHP Manager, tick the domain, choose a version from the PHP Version list and click Apply. To hand it back to Select PHP Version later, choose inherit.
DomainPHP versionDocument rootyourdomain.ininherit (8.3)/public_htmlold.yourdomain.inPHP 8.1 (ea-php81)/old.yourdomain.inApplyExample. The main site follows Select PHP Version; a legacy subdomain is pinned to 8.1 until its code is updated.
Step 2: Turn extensions on or off
Extensions are optional PHP modules, for image processing, encrypted scripts or caching. In Select PHP Version, open the Extensions tab and tick or untick a box; each change saves straight away. Each PHP version keeps its own list, so check it again after switching versions.
| If you run | Make sure these are ticked |
|---|---|
| WordPress | mysqli (or nd_mysqli), imagick, intl, zip, exif, gd |
| WooCommerce | the WordPress set, plus bcmath and soap if a payment or shipping plugin asks |
| Laravel | bcmath, ctype, fileinfo, mbstring, openssl, pdo_mysql (or nd_pdo_mysql), tokenizer, xml |
| Encoded scripts (some billing tools, licensed themes) | ioncube_loader, or sourceguardian if the vendor uses it |
| Redis object cache (WP Pro and Business) | redis |
Pairs that can't both be on. The list includes mysqli and nd_mysqli, and pdo_mysql and nd_pdo_mysql. They do the same job, so enable one of each pair, never both. If one is already ticked, leave it. Keep opcache on: it's the biggest free speed-up PHP has.
Step 3: Raise limits: memory, uploads and timeouts
Open the Options tab in Select PHP Version and click a value to change it. These are sensible values for a typical WordPress or WooCommerce site:
| Setting | Suggested | Why you'd change it |
|---|---|---|
| memory_limit | 256M | "Allowed memory size exhausted" errors; 512M for heavy page builders or big imports |
| upload_max_filesize | 64M | Uploading large images, videos, themes or plugin zips |
| post_max_size | 64M | Must be at least upload_max_filesize, or uploads still fail |
| max_execution_time | 120 | Long imports, backups or reports timing out (in seconds) |
| max_input_vars | 3000 | Large menus or page-builder pages that don't save completely |
For a domain pinned in MultiPHP Manager, change the same values in cPanelSoftwareMultiPHP INI Editor: choose the domain in Basic Mode, edit and click Apply.
More memory per request isn't more memory for the account. memory_limit caps a single PHP request; your plan caps the whole account (1 GB on Launch, 2 GB on Orbit, 4 GB on Galaxy, 8 GB on Universe). Setting 2G on Launch won't help, and lets one runaway script use everything. Raise it only as far as your app needs.
Check the change took effect
For WordPress, the quickest check is WordPressToolsSite HealthInfoServer, which lists the PHP version, memory limit and upload size. For anything else, use a phpinfo page:
-
Create the file
In cPanelFilesFile Manager, open the site's folder (usually
public_html), create a file with a hard-to-guess name such asinfo-7f3k2q.phpand add this single line:<?php phpinfo(); -
Open it and read three values
Visit https://yourdomain.in/info-7f3k2q.php. Check PHP Version at the top, then search the page for
memory_limitandupload_max_filesize. The Local Value column is what your site actually uses. -
Delete the file straight away
Never leave phpinfo online. It shows your server paths, loaded modules and configuration, which is exactly what someone probing for weaknesses looks for. Delete it as soon as you've read it.
Using the cPanel Terminal? php -v shows the account's version, not the version of a domain pinned in MultiPHP Manager, so the browser check is the reliable one.
WordPress: Upgrade PHP without surprises
WordPress itself runs on every version we offer, and running a current one is part of our website speed checklist. What breaks on a PHP upgrade is usually an old plugin or theme. This order avoids most trouble:
-
Update everything first
Update WordPress, all plugins and the theme on your current PHP version. Remove plugins you no longer use, and check the "Requires PHP" and "Tested up to" lines of the ones that haven't been updated in a year.
-
Try it on staging, then switch
Change the version on your staging copy (or take a backup, and know how to restore a cPanel backup), then test the pages that matter: home, a post, a form, wp-admin and, for stores, a test checkout.
-
Log errors quietly while you test
Add these lines to
wp-config.phpabove/* That's all, stop editing! */. Errors then go towp-content/debug.loginstead of your visitors' screens. Remove them when you're done:define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
If something breaks, switch back to the previous version: it takes effect in seconds. Then update or replace the plugin named in the log. Setting up a fresh site to test on? See Install WordPress with Softaculous.
PHP version troubleshooting in cPanel
White screen or 500 error after switching
Switch back to the previous version first, so the site is up again. Then open the error_log file in the site's folder, or cPanelMetricsErrors. The last lines name the file, and usually the plugin, that failed on the new version.
Changes in Select PHP Version don't apply to one domain
That domain is pinned to its own version in MultiPHP Manager. Set it back to inherit, or change its limits in MultiPHP INI Editor instead.
Uploads still fail with "exceeds upload_max_filesize"
Check three things: post_max_size is at least as large; the phpinfo Local Value shows your new number; and no old php_value lines in .htaccess or a leftover php.ini from a previous host override it. Remove those lines and manage limits in cPanel only.
"Your PHP installation appears to be missing the MySQL extension"
Neither mysqli nor nd_mysqli is enabled for the version you switched to. Tick one of them in the Extensions tab and reload the site.
"Site error: the ionCube PHP Loader needs to be installed"
Tick ioncube_loader in the Extensions tab. If the error then says the file was encoded for a different PHP version, the vendor's encoded files don't support your version yet. Stay on the version they list until they release an update.
Was this guide helpful?Your answer stays in this browser; nothing is sent unless you write to us below.
Related guides
All 16 guidesStill stuck? Ask an engineer.
Tickets and email are answered 24/7 in English and Hindi. Tell us the domain, the version you switched to and the last lines of its error_log.