Set PHP versions and limits
Each PHP hosting runs in its own PHP-FPM pool as its own system user. You choose the PHP version per site, and tune the pool’s limits per site.
Before you start
Section titled “Before you start”- Your account has the Edit hosting config permission. Installing and removing PHP versions needs an Owner.
- The PHP version you want is installed on the node that hosts the site. Hyperion offers 8.1, 8.2, 8.3 and 8.4.
- The site is active. A suspended site refuses a version change: resume it first.
Install a PHP version on a node
Section titled “Install a PHP version on a node”- Open Service health in the sidebar. On a cluster, pick the node.
- Open Not installed on this node and find
php8.4-fpm(or the version you need). - Click Install and confirm. It runs
apt-get installfor FPM, CLI and themysql,pgsql,curl,gd,mbstring,xml,zipandsoapextensions, and takes up to 5 minutes.
The PHP versions · security list further down shows every branch on the node with its build, status and the sites that use it.
Switch a site’s PHP version
Section titled “Switch a site’s PHP version”- Open the site’s Overview tab. Under About this site, find PHP.
- Pick the version in the list and click Switch. Confirm Switch version.
Hyperion removes the old pool, creates one on the new version with the same limits, rewrites the nginx vhost to the new socket (/run/php/<version>/<system-user>.sock) and reloads. Expect a few hundred milliseconds of 502 errors while the pool starts. If nginx rejects the new vhost, the site keeps serving through the old socket and the error is shown; fix it and switch again.
A static or imported PHP site without a version shows no PHP version yet and a Convert to PHP button instead. Converting gives the site a pool and rewrites its vhost; files and database stay. Proxy and redirect sites cannot run PHP.
PHP 8.1 is marked no security fixes in the list. A site on it shows a red banner telling you to switch to 8.3 or 8.4. After the last site has moved, remove the branch under Service health, PHP versions · security, with Uninstall. It is offered only when no site uses the branch and another PHP remains on the node. Uninstall runs apt-get purge on the branch’s packages and cannot be undone, other than by installing the branch again.
Change PHP-FPM and database limits
Section titled “Change PHP-FPM and database limits”- Open Settings & limits and find PHP-FPM & DB limits.
- Set the values:
| Field | Range | Default |
|---|---|---|
| PHP memory (MB) | 16 to 8192 | 256 |
| PHP max_execution_time (seconds) | 1 to 3600 | 60 |
| PHP-FPM max_children | 1 to 200 | 5 |
| PHP-FPM max_requests | 0 to 1,000,000 | 1000 |
| DB max connections | 1 to 1000 | 25 |
The first four values are applied to the PHP-FPM pool. DB max connections is stored with the site’s limits (and written by profiles) but nothing applies it to the database server, so it does not limit connections.
- Click Save limits. The PHP values apply to the pool at once, with a few hundred milliseconds of 502 errors while it restarts. Values outside the range are clamped.
memory_limit and max_execution_time are set by the pool and cannot be overridden by .user.ini or ini_set. This card is the only place to change them. A profile applied to the site writes the same values; the card then shows a from <profile> tag.
Two automations sit on the same card:
- Raise max_children automatically when the workers run out is on unless you turn it off. After the pool ran out of workers three times, the node adds 4 workers per step (at most a third of the server’s memory and half its CPU), at least 30 minutes apart, up to Automatic ceiling (default 20, or two steps above your own value). After 2 quiet weeks it steps back down. The card shows how often all workers were busy in the last 24 hours and whether visitors got 502 or 504 errors or waited over 10 seconds.
- Raise PHP memory automatically when the site runs out is off by default. When the site’s
error.logshows “Allowed memory size … exhausted”, the node raises the limit by 128 MB per step, at least 10 minutes apart, up to Automatic ceiling (default 512 MB, range 16 to 8192) and what the node’s memory allows. After 2 quiet weeks it steps back down to your own value. The ceiling must be above the site’s own value.
Unticking either box restores the value in the field above it.
Set upload size and other php.ini values
Section titled “Set upload size and other php.ini values”- On Settings & limits, open PHP settings & file repair.
- Fill in any of Largest upload (
upload_max_filesize), Largest request (post_max_size), Form fields per request (max_input_vars, 100 to 200000) and Show errors on the page (display_errors). Sizes look like64Mor1G. A blank field uses the pool default. - Click Save PHP settings.
Hyperion writes .user.ini in htdocs. PHP re-reads it within about 5 minutes; no restart is needed. In File ownership, Repair now sets the owner to the site user, directories to 0755 and files to 0644, which fixes failed plugin updates and uploads that vanish after a restore.
Check that it worked
Section titled “Check that it worked”On the Overview tab, PHP shows the new version and its socket. After saving limits, the page shows “PHP-FPM & DB limits saved.” After the php.ini save it shows “PHP settings saved (.user.ini; applies within ~5 min).”
ls /run/php/8.4/Expected: <system-user>.sock for each site on that version.
If it fails
Section titled “If it fails”- Invalid PHP value — sizes like 256M/1G, numbers in range, display_errors On/Off. One php.ini field is malformed.
- Automatic memory ceiling must be 16–8192 MB. or Automatic max_children ceiling must be 1–200. Correct the ceiling.
- Automatic ceiling (N MB) must be above the site’s own PHP memory (M MB), or there is nothing to raise to. Raise the ceiling or lower the site’s value. The same rule applies to the max_children ceiling.
- PHP settings were NOT saved — the server hosting this site could not write them. The node did not answer. Try again.
- hosting is suspended — resume first, then change PHP version. Resume the site.
- fpm_ensure for PHP 8.4 failed … The version’s FPM is missing or broken on the node. Install it from Service health, then switch again; the stored version already says 8.4.