ISPmanager 6 lets you run different PHP versions for each site independently. PHP runs via FastCGI (FPM) — faster than mod_php and more secure (user isolation).
Changing the PHP version for a site
WWW → Domains → select the domain → Edit → PHP → select the version.
Available PHP versions
| Version | Status | Recommended for |
|---|---|---|
| PHP 7.4 | EOL (not supported) | Old CMS |
| PHP 8.0 | EOL | Legacy projects |
| PHP 8.1 | Security fixes | Stable projects |
| PHP 8.2 | Active | WordPress 6.x ✅ |
| PHP 8.3 | Active | New projects ✅ |
EOL (End of Life) means the PHP developers no longer release security patches for that branch. A site on an EOL version keeps running, but every new vulnerability in the interpreter stays unpatched — including on a version that shipped with an old server image at the initial setup.
Installing additional PHP extensions
Settings → PHP → select the version → Extensions → enable the ones you need. The list of extensions is specific to each PHP version and is updated separately whenever ISPmanager itself is updated.
Commonly needed extensions:
php-redis— Redis object cachephp-imagick— image processingphp-gd— graphicsphp-zip— archivesphp-intl— internationalization
Changing PHP parameters (php.ini)
Settings → PHP → select the version → PHP Parameters.
| Parameter | Recommended value |
|---|---|
| memory_limit | 256M |
| upload_max_filesize | 64M |
| max_execution_time | 60 |
| max_input_vars | 3000 |
Custom php.ini for a site
# Create a .user.ini file in the site root
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 60
Order in which PHP settings are applied
- The PHP version's system php.ini — the default baseline values for all sites
- The FPM pool settings for the specific domain, set through ISPmanager
- The
.user.inifile in the site root — applies without restarting FPM, but with a delay of up to 5 minutes by default - An
ini_set()call inside the PHP code — applies only within the current request and overrides everything listed above
systemctl restart php8.2-fpmCommon PHP errors after changing versions
| Message | What it means |
|---|---|
502 Bad Gateway | Nginx can't reach PHP-FPM — often the FPM socket still points at the old path after a version change |
Fatal error: Uncaught Error: Call to undefined function | The new PHP version is missing an extension the code needs — enable it in the Extensions section |
Deprecated: Creation of dynamic property | The code was written for PHP 7.x — starting with PHP 8.2 such constructs are deprecated but not yet fatal |
PHP Fatal error: Allowed memory size exhausted | The memory_limit value is too low for the script — often surfaces during large file imports or heavy CMS plugins |
mod_php, FPM, and CGI: PHP modes compared
| Criterion | mod_php (Apache) | PHP-FPM | CGI |
|---|---|---|---|
| User isolation | None (shared Apache process) | Yes (separate pool per user) | Yes, but slower |
| Performance | Medium | High | Low |
| Support in ISPmanager 6 | Only with Apache as the primary server | Default for Nginx and Nginx+Apache | Legacy, not recommended |
When switching the PHP version won't help
- The error is caused not by the PHP version but by a missing extension — switching versions without enabling the required extension just carries the same error to the new version
- The code uses deprecated constructs (for example,
each(), removed in PHP 8.0) — the code needs a fix, not just a version change in the panel - The problem is at the database or external API level — switching PHP doesn't fix MySQL timeouts or a third-party service being unavailable
- The extension is installed but not wired to the right FPM pool — after enabling an extension in the panel, an explicit restart of that specific pool is sometimes needed, not just the general PHP service
Verifying the result
After changing the version, confirm the site actually uses the intended PHP, not a stale cached process.
# Check the active PHP version for the site via phpinfo
echo "<?php phpinfo(); ?>" > /var/www/user1/data/www/example.com/www/info.php
curl -s http://example.com/info.php | grep "PHP Version"
# Delete info.php right after checking — phpinfo exposes server configuration and file paths
If the version in the output doesn't match what's selected in the panel, check that the FPM pool for the domain was actually recreated rather than left over from the previous version, and that opcache isn't serving stale compiled bytecode. Related topics: creating a website in ISPmanager 6 and installing WordPress on ISPmanager.