Running your project
PHP and Node.js versions
What this page is for: run a website on a PHP or Node.js version other than the server's own — an older application that needs PHP 7.4 or 8.2, an app pinned to Node.js 20 or 22 — without changing anything for the rest of the server.
The rule that does not move: this server's own PHP and Node.js stay exactly as they are. Your 6amMart projects, phpMyAdmin and every website that has not chosen otherwise keep running on them. Extra versions are optional downloads: nothing is installed until you press Install, and an installed version does nothing until you move a website onto it.
You need
- A website of the kind that runs PHP (PHP website, WordPress) or Node.js (Node.js app, Create with AI, or a static website whose files are built before they are served). 6amMart projects always run on the server's own PHP.
- For a PHP version: about 6–9 MB of download and 25–40 MB of disk per version.
- For a Node.js version: about 20–32 MB of download and 140–210 MB of disk per version.
- To install or remove a version, or change a version's extensions and settings: the owner's login. A temporary login can move a website between the versions already installed, and turn that website's own extensions on or off.
Server → PHP
Open Server and the PHP tab.
PHP versions on this server lists what is installed. The first row is the server's own (marked server's own); beside each version you see whether it is running, how long php.net supports it, and which websites (and, for the server's own, which 6amMart projects) use it. Manage — or a click on the used by count — opens that version below the table: its websites (each one movable from there), its extensions and its server-wide settings. Remove appears only on a version no website uses — the server's own can never be removed.
Download another PHP version lists every version available for this server — from 5.6 to the newest — with its size and support:
- supported until … — php.net still fixes bugs in it;
- security fixes only, until … — still safe to run, no more bug fixes;
- end of life since … — no fixes at all any more. Use it only for an old application that cannot run on anything newer;
- pre-release — a version that is not out yet. For testing only.
Versions past their end of life are folded away under Show versions past their end of life, so the list opens on the ones worth choosing.
Press Install on the one you need. The download takes about a minute and runs as a job you can watch. When it finishes, the new version is running beside the server's own, with SixPanel's settings (the same tuned limits and code cache as the server's own PHP) and the same sandbox, and every website can choose it. Those settings follow the server's own PHP from then on: when Auto-tune or a SixPanel update changes them, every extra version gets the same values — your own lines for a version (below) still win.
The versions come from packages.sury.org, the repository Debian's own PHP maintainer publishes. SixPanel pins it so that only the extra PHP versions come from there: the web server, the database and the server's own PHP keep coming from your distribution's updates.
Websites of one version
The first part of Manage lists every website on that version. Beside each one, Move to offers the other installed versions — choose one and press Move; it is the same move as on the website's own PHP page (below), with the same checks. 6amMart projects are named under the server's own version and have no Move: they always run on the server's own PHP.
Extensions of one version
Each installed extension of a version is either loaded for every website on that version, or left to each website — then only the websites that switch it on load it. Install one, then choose Leave to each website if only some websites need it. The extensions every website counts on (MySQL, curl, mbstring, intl, gd, zip, redis, imagick and the rest of SixPanel's set) are always on and cannot be removed.
Server-wide settings of one version
php.ini lines for every website on that version, one name = value per line — for example max_input_vars = 10000. They win over SixPanel's tuned values, which are shown above them, and a SixPanel update never undoes them. A website's own PHP page can still change most settings for itself. Lines that load extensions, change how the code cache behaves or move SixPanel's folders are refused here; the page says which.
The three sizes of the code cache are the exception, and they can only be raised: opcache.memory_consumption (megabytes — up to a quarter of the server's memory, because one cache is shared by every project and website on that version), opcache.interned_strings_buffer (megabytes — up to a quarter of the line before) and opcache.max_accelerated_files. Write whole numbers with no unit. What you save replaces what was in the box, so keep the opcache.memory_consumption line you raised when you add the second one — without it the cache goes back to the size SixPanel gave it, and the second line is checked against that. You only need them when Health says the compiled-code cache is full or getting tight: that row names the exact line to add here. Saving reloads PHP and the cache starts again at the new size.
Move a PHP website to another version
From Server → PHP: open the version it runs on with Manage, choose the new version under Move to beside the website, and press Move. Or open the website, then PHP: the PHP version card shows the version it runs on — choose another installed version and press Move to this version.
What happens, in order:
- The website's pool is written into the new version, which reloads.
- The new version must answer a test request for this website through its own socket — and load every extension the website turned on.
- Only then are visitors sent to it, and the old version stops serving the website.
If step 1 or 2 fails, nothing changes: the website keeps running on the version it had. Composer, WP-CLI, WordPress's scheduled tasks, your scheduled jobs and your deploy commands move with the website — a php artisan … line runs on the new version too.
Check the website afterwards. Code written for one PHP version does not always run on another; if it does not, move it back the same way.
Extensions for this website only
Under the version card, Extensions for this website only lists the extensions that are installed for the website's version but left to each website. Tick the ones this website needs and press Save extensions. The panel reloads PHP and asks the website's pool whether each one is now loaded — if one is not, the previous list stays.
Server → Node.js
Open Server and the Node.js tab.
The first row is the server's own Node.js — the version SixPanel itself runs on — with the websites that use it. Below it are the versions you installed, each with how its download was checked:
- signature by … — the download matched nodejs.org's published checksums, and those checksums carry a valid signature from one of the Node.js release team's keys;
- checksum only — the download matched the checksums, but their signature could not be checked at the time (the keys could not be fetched). Hover to see why.
Download another Node.js version lists the newest release of every Node.js line, with its support (the server's own version is marked server's own there, not offered again):
- LTS "…" until … — long-term support, the right choice for a live website;
- LTS, maintenance until … — still supported, near the end of its life;
- Current — the newest line, before it becomes LTS;
- end of life since … — no security fixes (folded away under Show versions past their end of life).
Press Install, or type an exact version under Or a specific version (for example 20.11.1). The download is checked against nodejs.org's signed checksums before it is unpacked; a download that does not match is never installed. Versions up to Node.js 24 also bring pnpm and yarn (corepack); from Node.js 25 on, pnpm and yarn run through npx, as they do on the server's own Node.js.
Websites and their Node.js, at the bottom of the tab, lists every website that runs on Node.js or builds with it, and the version it uses. Choose another version beside it and press Move — the same rebuild as on the website's own Settings (below).
Choose a Node.js version for a website
Open the website, then Settings. The Node.js version card shows what the website builds and runs on. If its package.json asks for a version ("engines": { "node": … }), the card says whether the server's own fits, or which installed version does — and marks it with ✓ in the list.
Choose a version and press Build with this version. The live version's files are copied into a new version, its packages are installed again for the new Node.js, it is built, and it starts beside the running one. Visitors move over only when it answers — if the build fails, nothing changes and the website keeps its old version.
The version is part of each build: Deploys marks the new one built again with Node.js …, and rolling back to an older version runs it on the Node.js it was built with.
A static website whose files are a source project (a package.json with a build script — SixPanel builds it before nginx serves the result) has the same card, and the version is used for its build only. A static website with no build step runs no Node.js and has no card.
Remove a version
Remove is offered only on a version no website uses (for Node.js: no website and no live version was built with it). Move those websites first. The server's own PHP and Node.js cannot be removed from these pages.
Uninstalling SixPanel (sixpanel server uninstall) removes the extra PHP and Node.js versions SixPanel downloaded — only the packages its own installs added, never one you installed yourself — together with the packages.sury.org source, and puts php-common back on your distribution's version when apt can do that without removing anything. A PHP version a website still runs on stays (nginx keeps serving that website after the uninstall), and so does a Node.js version a website was built with while the panel's data is kept. The uninstall's output lists what stayed and why.
How to check it worked
- Server → PHP: the new version shows running; after moving a website, its row counts the website.
- The website's PHP page shows the version in its badge; Show phpinfo() reports it.
- Server → Health has a row for the extra versions: each PHP version must be running and accept its own configuration; each Node.js version must start and report the version its folder is named for.
If it went wrong
- "PHP x.y did not answer for this website" — the move stopped before visitors were sent anywhere; the website is unchanged. Open Server → Health for the version's state, or Logs on the website.
- "this version of the site was built with Node.js x, which is no longer installed" — install that version again on Server → Node.js, or deploy again.
- A version is stopped — Health shows it, and its row on Server → PHP has a Start button. If it will not start, the usual cause is a server-wide setting you added to that version: open Manage, clear the line under Server-wide settings, and press Start again.
- apt says another package run is using it — the install waits up to ten minutes for the other run (an automatic update) to finish, then goes on.
Something unclear?Ask Tia