Een kritiek productiesysteem draait Debian met PHP.
De security support van PHP 7 loopt af.
En de main respository voorziet niet in een update naar PHP 8.

https://wiki.debian.org/PHP#How_PHP_is_packaged_in_Debian
https://www.php.net/supported-versions.php

Wat is de beste oplossing voor dit probleem?

Ik heb gehoord van deb.sury.org , maar gezien dat hier slechts 1 persoon achter zit, brengt dit een onverantwoord beveiligingsrisico met zich mee.

Eerst zelf compileren op een ander systeem lijkt me veel gedoe met overzetten, ik ken niet alle afhankelijkheden en moet garanties hebben dat dan alles wel goed werkt, en dat binnen 2 weken omdat daarna PHP 7 niet meer ondersteund wordt.

Het kritieke productiesysteem afsluiten brengt de bedrijfscontinuïteit in gevaar.

We lijken hier vast te lopen met Debian. Als ik naar andere Linux-distributies kijk, zoals CentOS, komt ook hier weer een third party packager aan te pas.

Is dit het einde van PHP voor onze productie-omgeving?
Of moeten we verplicht overgaan op een commerciële aanbieder van Long Term Support zoals Freexian?
Wat zou jij doen ?

Ja dat vrees ik ook..
Je zult eenmalig moeten zorgen dat jouw PHP naar wens gecompiled is.
Dus alle options in het configure commando maak je kloppend.

Tijdens het compilen wordt deze lijst opgeslagen onder de naam config.nice.
Die gebruik ik keer op keer bij mijn update-script.

Voor het upgraden roep ik aan : sh upgradephp.sh 8.1.99

Dat script luidt:

[***@***~]$ cat upgradephp.sh
#!/bin/bash

VERSION=$1
echo $VERSION

CURRENTVERSION=$(php -r 'echo phpversion();')

echo $CURRENTVERSION

if [ $VERSION > $CURRENTVERSION ] ;
then
  rm "php-$VERSION.tar.gz"
  rm -rf "php-$VERSION"

  /usr/bin/wget "https://www.php.net/distributions/php-$VERSION.tar.gz" &&
  tar xvfz "php-$VERSION.tar.gz"  &&

  cd "php-$VERSION"

  if [ -f "../php-$CURRENTVERSION/config.nice" ] ;
  then
    sh "../php-$CURRENTVERSION/config.nice"
  else
    sh "../php-8.1.1/config.nice"
  fi

  make &&  sudo make install && sudo service httpd restart

else
   echo "already on version $VERSION"
fi


en voor referentie de inhoud van de config.nice (op _mijn_ server):


#! /bin/sh
#
# Created by configure

'./configure' \
'--program-prefix=' \
'--datadir=/usr/share' \
'--includedir=/usr/include' \
'--with-config-file-path=/etc/php81/' \
'--with-curl' \
'--enable-gd' \
'--with-libdir=lib64' \
'--enable-exif' \
'--with-openssl' \
'--with-zlib' \
'--with-bz2' \
'--enable-soap' \
'--enable-ftp' \
'--cache-file=../config.cache' \
'--without-pear' \
'--with-apxs2=/usr/bin/apxs' \
'--enable-cli' \
'--with-kerberos' \
'--with-imap-ssl' \
'--with-zlib-dir=/usr/lib' \
'--disable-cgi' \
'--with-mysqli' \
'--with-pdo-mysql' \
"$@"


Dit script loopt een aantal minuten. Vooral het stuk "make" duurt lang.
NB: dit script restart ook apache.
Dit gebruik ik op een dev-omgeving. Waarschijnlijk wil je dat in productie-omgeving handmatig doen
Handig script, ik denk dat er wel vraag naar is.

In mijn geval heb ik naast het upgraden naar PHP 8.0 ook nog het probleem dat mijn applicatie naar PHP 8.0 moet. En dat gaat me niet lukken binnen de tijd. Ik bedacht me later pas dat zelfs al had ik aan unit tests gedaan, dan nog is het lastig vanwege de aanpassingen in booleanse logica in PHP 8.

Dus gaat de klant nu versneld over op een andere gecompileerde applicatie, en wordt PHP 7.4 direct uitgefaseerd.

Reageren