@@PRODUCT@@

PHP and database versions

A website runs on a PHP series, and its database on a MariaDB or MySQL series. Choosing the two works differently, and that difference is the point of this article: you change a website's PHP series with one click; you change a database ser

Written for: Administrator

A website runs on a PHP series, and its database on a MariaDB or MySQL series. Choosing the two works differently, and that difference is the point of this article: you change a website's PHP series with one click; you change a database series by moving the database to another server. Below, per task: where to click and what to type in a terminal.

Which series CoreCP offers and how long each is supported is in Which versions we offer. Which php.ini settings a customer may change is in The PHP policy of a server.

Which PHP series a server has

A server only offers the PHP series installed on it. Open Servers, pick the server and go to its components tab (/nodes/:node/components). Every series shows its version and a label: Supported, Security fixes only or No more fixes.

  • Install this series adds one. It is a task on the server; after a minute it is in the list and every website can choose it.
  • Remove this series takes it off again. The server refuses while even one website still runs on it: move the websites first, then remove.

Migrating customers from an old server? Install the series the source uses before the import. A website whose series is missing is skipped by the import and named in its report.

Changing a website's PHP version

  1. Go to Accounts, open the account and choose the Websites tab (/accounts/:account/websites).
  2. Click the website's row; its panel slides open.
  3. Click Set up PHP and pick the new series under Version.

The change is immediate. If the panel installed an application from its catalogue on that website — Joomla, Nextcloud and the others under Applications — it first checks that the application supports the new series, and refuses with the reason if it does not. WordPress is not part of that check; it only asks for PHP 7.4 or newer. Only from the terminal can you overrule that deliberately with --force; the task log says so.

When a PHP series stops receiving fixes

CoreCP never withdraws a series and never moves a website onto another series by itself. A customer with an application of their own that only runs on PHP 7.4 can keep running it, isolated in their own account.

The price is a notice that does not stop:

  • the customer and their reseller see a critical PHP support row on the account overview that cannot be dismissed;
  • they get a mail on the end date and every ninety days after;
  • you get a finding on Components & security (/components) ninety days before the end date.

The server advisor also has a row about runtime support. You can put it away per series for at most ninety days, with a reason if you write one down — except for a series nobody ships security fixes for any more. That is not a choice but a property of the machine, and the panel does not hide it.

Database series: one series per server

A server runs exactly one database series: MariaDB 11.8 (the default, from Ubuntu 26.04 itself), MariaDB 11.4 or MariaDB 10.11 (both from the CoreCP mirror), or MySQL 8.4 as the engine. You read a server's series in its components list, next to the database server.

MariaDB cannot move a major version up or down in place. That is why a server refuses a series change while it holds a database. The way to another series is a move to a server that already runs it.

A new database server gets the default series. For another one, choose it at installation in the terminal with --db-series (see below); the wizard of Adding a server does not ask.

Moving a database to another series

  1. Open the account and choose the Placement tab (/accounts/:account/placement).
  2. Pick another server for the database role. Every server in the list carries its series, and what the move does to the version: upgrade, downgrade or same.
  3. Confirm. The panel dumps on the source, transfers the dump and loads it on the destination.
  4. Then check the site and the database on the new server yourself: the move does not count the rows afterwards.

An upgrade (10.11 → 11.8) is what MariaDB supports. A downgrade is allowed but named as one: a dump from a newer series can carry something the older one does not know. Check extra carefully after such a move that everything is there.

A package can require a series. If the customer's package says "MariaDB 10.11", the panel refuses a destination on another series, and a new account on that package is only placed on a server that runs 10.11. To let the customer move anyway, change the package first under Packages (/packages).

From the terminal

On the server:

corectl php list                     # the series this server has, with their label
corectl versions --available         # what can be installed, per series
corectl php add 8.4                  # add a series
corectl php set example.com 8.4      # one website's series
corectl php remove 7.4               # refuses while a website uses it
corectl db series list               # this server's database series
corectl db engine show               # MariaDB or MySQL
corectl setup --profile db-dedicated --db-series 10.11   # a new database server on another series
corectl advisor snooze --subject php:8.2 --days 30 --reason "shop moves in Q4"

On the panel, what today's PHP end-of-life round would send, without sending anything:

corecp-panel php-eol round --dry-run

The database-upgrade check

The database-upgrade rows in a server's check list read in your own language. On the terminal corectl doctor prints the same rows in English, as it always has.

See also

  • Which versions we offer — the series, their end dates and what happens when Ubuntu ships a new LTS.
  • PHP settings for a website — php.ini and extensions per website.
  • Where a website is served — placement, pools and moving between servers.
  • Components and security — findings about what runs on your servers.