Hvordan installere PHP 8.3 eller 8.4 på Debian 12 Bookworm
Wed 2025-04-09 Linux
Debian 12 Bookworm kommer med PHP 8.2 som standardversjon i repoene sine, og siden Debian er Debian vil det nok gå noe tid før vi ser offisielle repos ha 8.3 eller 8.4.
Jeg har hatt et problem med mod-php8.2 på Debian lenge, der configure-delen av installasjonen har feilet. Modulen har på et eller annet vis fungert likevel, men i en nylig oppdatering av mye annet sluttet den å virke helt og det var umulig å få fikset det.
Siden jeg allerede hadde brukt mye tid på å finne ut av dette tidligere og problemet nå var en virkelig showstopper fant jeg på at jeg kanskje skulle oppgradere til PHP 8.3 (eller 8.4). Litt googling ga meg flere resultater, og her er kortversjonen:
Legg til Ondřej Surý’s PHP PPA til Debian. Dette repoet inneholder mer oppdaterte PHP-versjoner enn hva som er tilgjengelig i Debian.
Her er kortversjon av installasjonsflyten:
- Få hentet ut en liste over alle PHP-komponenter som er installert:
sudo dpkg -l | grep php | tee packages.txt
- Installer forskjellige pakker som er nødvendige for at dette skal funke skikkelig:
sudo apt install apt-transport-https lsb-release software-properties-common ca-certificates wget -y
- Legg til tredjeparts-repo for PHP 8.3/8.4:
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x
Hver gang du ser en curl https://URL | bash skal du være veldig kritisk. Ikke kjør tilfeldige scripts du finner på nettet uten å ha lest dem og forstått hva de gjør. I dette tilfellet, kjør kommandoen
curl -sSL https://packages.sury.org/php/README.txt | less
for å laste ned README.txt og åpne den i less for å se innholdet. Du vil da se at README.txt slett ikke er en README-tekstfil i det hele tatt, men et bash-script i kamuflasje (noe jeg ikke likte noe særlig, men dette er grunnen til at vi er forsiktige og sjekker ting før de kjøres. Da denne artikkelen ble publisert inneholdt README.txtfølgende:
#!/bin/sh
# To add this repository please do:
if [ "$(whoami)" != "root" ]; then
SUDO=sudo
fi
${SUDO} apt-get update
${SUDO} apt-get -y install lsb-release ca-certificates curl
${SUDO} curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
${SUDO} dpkg -i /tmp/debsuryorg-archive-keyring.deb
${SUDO} sh -c 'echo "deb [signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
${SUDO} apt-get update
I og for seg ikke noe skummelt her, men man vet aldri.
- Etter å ha lagt til repoene, kjør
sudo apt update
for å oppdatere package cache.
- Nå er vi klare for å installere PHP. Avhengig av hvor mye trafikk man ser for seg å få, så har man i hovedsak valget mellom å sette PHP opp som en Apache-modul eller FastCGI PHP handler. Jeg har aldri hatt behov for å sette opp FastCGI og har dermed ikke gjort det, men jeg inkluderer instrukser for det lenger nede.
- Installasjon som Apache-modul (jeg gikk for PHP 8.4):
sudo apt install php8.4 libapache2-mod-php8.4
Dette vil dra inn en hel del ekstra PHP-ting, og, hvis PHP8.2 allerede er installert, oppgradere alle installerte PHP8.2-moduler til 8.4 automagisk.
- Hvis libapache2-mod-php8.2 allerede var installert og aktivert i Apache-configen må linjen som laster inn modulen endres fra:
LoadModule php_module /usr/lib/apache2/modules/libphp8.2.so
til
LoadModule php_module /usr/lib/apache2/modules/libphp8.4.so
- Restart Apache for å laste inn ny PHP-modul:
sudo systemctl restart apache2
- Det kan være hensiktsmessig å rydde opp etter seg ved å fjerne eventuelle php8.2-pakker som av en eller annen grunn ikke ble avinstallert under oppgraderingen, som nettopp libapache2-mod-php8.2.
Installasjon av Apache med PHP-FPM 8.4
Dette forutsetter følgende:
- Apache er allerede installert og konfigurert, bortsett fra for PHP
- Apache-mod-php er ikke og har ikke vært installert tidligere
- PHP-FPM er ikke og har ikke vært installert tidligere
Installasjon:
- sudo apt install php8.4-fpm libapache2-mod-fcgid
- Aktiver PHP-FPM:
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.4-fpm
- Restart Apache for å aktivere modulen og config:
sudo systemctl restart apache2