Configurar el repositori

Disponible: 38 paquets publicats.

PHP 7.4 no té suport upstream des del 28 de nov. del 2022: aquest repositori hi afegeix la correcció de php2shell, però no cobreix altres vulnerabilitats. Migra a una versió de PHP amb suport.

Fitxer d'origen d'APT

# php-repos.clouding.io: PHP 7.4 - Ubuntu 18.04 LTS (Bionic)
deb [signed-by=/usr/share/keyrings/php-repos.clouding.io.gpg] https://php-repos.clouding.io/ubuntu bionic php7.4 deps

Script d'actualització (copiar i enganxar com a root)

#!/bin/sh
# php-repos.clouding.io - Actualitzar els paquets de PHP 7.4 instal·lats a Ubuntu 18.04 LTS (Bionic)
set -e
export LC_ALL=C DEBIAN_FRONTEND=noninteractive
[ "$(id -u)" = 0 ] || { echo 'Executa aquest script com a root.'; exit 1; }
CODENAME=$( (. /etc/os-release 2>/dev/null; echo "${VERSION_CODENAME:-}") )
[ -n "$CODENAME" ] || CODENAME=$(lsb_release -sc 2>/dev/null || true)
[ -n "$CODENAME" ] || CODENAME=$(sed -n "s/^DISTRIB_CODENAME=//p" /etc/lsb-release 2>/dev/null || true)
[ "$CODENAME" = 'bionic' ] || { echo 'Aquest sistema no és Ubuntu 18.04 LTS (Bionic): es cancel·la.'; exit 1; }

# 1. php-repos.clouding.io.gpg + php-repos.clouding.io.list
mkdir -p /usr/share/keyrings
if command -v curl >/dev/null 2>&1; then curl -fsSL https://php-repos.clouding.io/php-repos.clouding.io.gpg -o /usr/share/keyrings/php-repos.clouding.io.gpg.new
else wget -q -O /usr/share/keyrings/php-repos.clouding.io.gpg.new https://php-repos.clouding.io/php-repos.clouding.io.gpg; fi
mv /usr/share/keyrings/php-repos.clouding.io.gpg.new /usr/share/keyrings/php-repos.clouding.io.gpg && chmod 644 /usr/share/keyrings/php-repos.clouding.io.gpg
cat > /etc/apt/sources.list.d/php-repos.clouding.io.list <<'PHPREPOS_EOF'
# php-repos.clouding.io: PHP 7.4 - Ubuntu 18.04 LTS (Bionic)
deb [signed-by=/usr/share/keyrings/php-repos.clouding.io.gpg] https://php-repos.clouding.io/ubuntu bionic php7.4 deps
PHPREPOS_EOF
apt-get update

# 2. Actualitzacions previstes (only already installed packages)
PKGS=$(dpkg-query -W -f='${db:Status-Abbrev} ${Package}\n' 'php7.4' 'php7.4-*' 'libapache2-mod-php7.4' 'libphp7.4-embed' 'php-common' 2>/dev/null | awk '$1 ~ /^ii/ {print $2}' | sort -u)
[ -n "$PKGS" ] || { echo 'No hi ha paquets de PHP 7.4 instal·lats: no hi ha res a actualitzar.'; exit 0; }
SIM=$(apt-get -s -o Dpkg::Options::=--force-confold install --only-upgrade --no-remove --no-install-recommends $PKGS 2>&1) || { echo "$SIM"; echo 'apt no pot actualitzar aquests paquets sense eliminar res o sense conflictes: es cancel·la, no s'\''ha canviat res.'; exit 1; }
if echo "$SIM" | grep -qE "^(Remv|Purg) "; then echo "$SIM" | grep -E "^(Remv|Purg) "; echo 'apt eliminaria paquets: es cancel·la, no s'\''ha canviat res.'; exit 1; fi
DOWN=0
echo "$SIM" | sed -n "s/^Inst \([^ ]*\) \[\([^]]*\)\] (\([^ ]*\) .*/\1 \2 \3/p" > /tmp/php-repos-plan.$$
while read -r PKG OLD NEW; do if dpkg --compare-versions "$NEW" lt "$OLD"; then echo "DOWNGRADE $PKG $OLD -> $NEW"; DOWN=1; fi; done < /tmp/php-repos-plan.$$
[ "$DOWN" = 0 ] || { rm -f /tmp/php-repos-plan.$$; echo 'apt baixaria de versió paquets: es cancel·la, no s'\''ha canviat res.'; exit 1; }
if [ ! -s /tmp/php-repos-plan.$$ ]; then rm -f /tmp/php-repos-plan.$$; echo 'Tot ja està actualitzat.'; exit 0; fi
echo 'Actualitzacions previstes:'; cat /tmp/php-repos-plan.$$; rm -f /tmp/php-repos-plan.$$

# 3. upgrade
apt-get -y -o Dpkg::Options::=--force-confold install --only-upgrade --no-remove --no-install-recommends $PKGS
if dpkg-query -W -f='${db:Status-Abbrev}\n' libapache2-mod-php7.4 2>/dev/null | grep -q "^ii" && command -v apache2ctl >/dev/null 2>&1; then
  echo 'Recarregant Apache per carregar el nou mòdul de PHP'; apache2ctl -t && (systemctl reload apache2 2>/dev/null || service apache2 reload)
fi
echo 'Fet.'

L'script només actualitza els paquets de PHP que ja estan instal·lats. Mai instal·la paquets de PHP nous, mai elimina paquets i mai fa downgrade: primer simula l'actualització i s'atura si apt hagués d'eliminar o baixar de versió res. Es conserven els fitxers de configuració existents.