====== Update PHP version ====== To run newer PHP versions on Debian than what is provided in your stable release's official repositories, use the third-party repository maintained by Ondřej Surý. This trusted community repository provides concurrent, up-to-date PHP packages (from legacy releases up to newer builds like PHP 8.4 or 8.5) for all active Debian distributions. ===== Secure existing config ===== ==== List existing PHP packages ==== This step only applies when upgrading an existing PHP setup. The following command lists all installed PHP packages with the text php in its name, shows it on screen, and writes it to a file called packages.txt. This file comes in handy at a later step when installing the PHP 8.4 packages, to ensure the same list of PHP 8.4 versions of the extensions are installed. dpkg -l | grep php | tee packages.txt php8.2-apcu/oldstable,now 5.1.22+4.0.11-2 amd64 [installed,automatic] php8.2-bcmath/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] php8.2-bz2/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] php8.2-cli/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] php8.2-common/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] php8.2-curl/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] php8.2-fpm/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] php8.2-gd/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] php8.2-gmp/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] php8.2-igbinary/oldstable,now 3.2.13-1 amd64 [installed,automatic] php8.2-imagick/oldstable,now 3.7.0-4 amd64 [installed,automatic] php8.2-intl/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] php8.2-mbstring/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] php8.2-memcached/oldstable,now 3.2.0+2.2.0-4 amd64 [installed,automatic] php8.2-msgpack/oldstable,now 1:2.2.0~rc2-3 amd64 [installed,automatic] php8.2-mysql/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] php8.2-opcache/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] php8.2-readline/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] php8.2-xml/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] php8.2-zip/oldstable-security,now 8.2.33-1~deb12u1 amd64 [installed,automatic] === php.ini === Save the old: /etc/php8.2/php.ini === www.conf === Save the old: /etc/php/8.2/fpm/pool.d/www.conf ==== Install Sury Repository ==== cd /tmp wget -q https://packages.sury.org/debsuryorg-archive-keyring.deb apt-get install ./debsuryorg-archive-keyring.deb . /etc/os-release cat << EOF > /etc/apt/sources.list.d/sury-php.sources Types: deb deb-src URIs: https://packages.sury.org/php Suites: $VERSION_CODENAME Components: main Signed-By: /usr/share/keyrings/debsuryorg-archive-keyring.gpg EOF apt-get update apt-cache policy php ==== Install php and packages ==== apt install php8.4 php8.4-cli php8.4-cgi php8.4-fpm Install custom packages: apt install php8.4-apcu php8.4-bcmath php8.4-bz2 php8.4-cli php8.4-common php8.4-curl apt install php8.4-fpm php8.4-gd php8.4-gmp php8.4-igbinary php8.4-imagick apt install php8.4-intl php8.4-mbstring php8.4-memcached php8.4-msgpack apt install php8.4-mysql php8.4-opcache php8.4-readline php8.4-xml php8.4-zip ==== Update configuration ==== Update the /etc/php8.4/php.ini with the saved /etc/php8.2/php.ini Needed for NextCloud: /etc/php/8.4/fpm/pool.d/www.conf env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp Configuring the Default PHP Version After installing additional PHP versions, if you want to set the OS default PHP version back to the one for your Debian release, run these commands: update-alternatives --config php update-alternatives --config php-cgi Update php in fastcgi_pass unix:/var/run/php/php8.4-fpm.sock; /etc/nginx/sites-available/www.oscardegroot.nl /etc/nginx/sites-available/cloud.oscardegroot.nl systemctl restart nginx ==== Links ==== [[https://wiki.debian.org/AdditionalPHPVersions]]