Configurations de deux versions de PHP différentes, pourquoi?

Tags: #<Tag:0x00007f95644393a0>

Pas retrouvé dans .bash_history :confused: à mon avis, j’ai dû effacer le contenu plus ancien en faisant mes essais…

Cela dit, phpinfo m’indique bien './configure' '--enable-fpm' '--prefix=/opt/php74' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--enable-gd-native-ttf' '--with-zlib-dir' '--enable-mbstring' '--enable-sockets' '--enable-sysvsem' '--with-xsl' '--enable-soap' '--with-bz2' '--enable-zip' '--with-freetype-dir' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-openssl' '--enable-intl'

pour PHP 7.4, d’où mon incompréhension la plus totale.

J’ai tenté avec le dépôt de Sury mais ça fait la même chose, quelle que soit la version de PHP que je souhaite installer, il veut d’abord me désinstaller les deux versions compilées.

Je vais essayer de voir pour phpenv et phpbuild, j’ignore ce que c’est, mais puisque je suis coincé…

Merci pour ta réponse ! :slight_smile:

1 J'aime

J’ai pu mettre la main sur le .deb créé lors de la compilation, et ça confirme mes interrogations dubitatives sur le pourquoi du comment que je comprends plus rien…

Le fichier php-config dans /usr/bin contient ça :

#! /bin/sh

SED="/usr/bin/sed"
prefix="/opt/php74"
datarootdir="/opt/php74/php"
exec_prefix="${prefix}"
version="7.4.18"
vernum="70418"
include_dir="${prefix}/include/php"
includes="-I$include_dir -I$include_dir/main -I$include_dir/TSRM -I$include_dir/Zend -I$include_dir/ext -I$include_dir/ext/date/lib"
ldflags=""
libs="-lcrypt   -lresolv -lcrypt -lrt -lstdc++ -lbz2 -lrt -lm -ldl  -lxml2 -lssl -lcrypto -lsqlite3 -lxml2 -licuio -licui18n -licuuc -licudata -lonig -lsqlite3 -lxml2 -lxml2 -lcrypt -lxml2 -lxml2 -lxml2 -lxslt -lxml2 -lexslt -lxslt -lxml2 -lz -lssl -lcrypto -lcrypt "
extension_dir='/opt/php74/lib/php/extensions/no-debug-non-zts-20190902'
man_dir=`eval echo ${datarootdir}/man`
program_prefix=""
program_suffix=""
exe_extension=""
php_cli_binary=NONE
php_cgi_binary=NONE
configure_options=" '--enable-fpm' '--prefix=/opt/php74' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--enable-gd-native-ttf' '--with-zlib-dir' '--enable-mbstring' '--enable-sockets' '--enable-sysvsem' '--with-xsl' '--enable-soap' '--with-bz2' '--enable-zip' '--with-freetype-dir' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-openssl' '--enable-intl'"
php_sapis=" cli fpm phpdbg cgi"
ini_dir=""
ini_path="/opt/php74/lib"

# Set php_cli_binary and php_cgi_binary if available
for sapi in $php_sapis; do
  case $sapi in
  cli)
    php_cli_binary="${exec_prefix}/bin/${program_prefix}php${program_suffix}${exe_extension}"
    ;;
  cgi)
    php_cgi_binary="${exec_prefix}/bin/${program_prefix}php-cgi${program_suffix}${exe_extension}"
    ;;
  esac
done

# Determine which (if any) php binary is available
if test "$php_cli_binary" != "NONE"; then
  php_binary="$php_cli_binary"
else
  php_binary="$php_cgi_binary"
fi

# Remove quotes
configure_options=`echo $configure_options | $SED -e "s#'##g"`

case "$1" in
--prefix)
  echo $prefix;;
--includes)
  echo $includes;;
--ldflags)
  echo $ldflags;;
--libs)
  echo $libs;;
--extension-dir)
  echo $extension_dir;;
--include-dir)
  echo $include_dir;;
--php-binary)
  echo $php_binary;;
--php-sapis)
  echo $php_sapis;;
--configure-options)
  echo $configure_options;;
--man-dir)
  echo $man_dir;;
--ini-path)
  echo $ini_path;;
--ini-dir)
  echo $ini_dir;;
--version)
  echo $version;;
--vernum)
  echo $vernum;;
*)
  cat << EOF
Usage: $0 [OPTION]
Options:
  --prefix            [$prefix]
  --includes          [$includes]
  --ldflags           [$ldflags]
  --libs              [$libs]
  --extension-dir     [$extension_dir]
  --include-dir       [$include_dir]
  --man-dir           [$man_dir]
  --php-binary        [$php_binary]
  --php-sapis         [$php_sapis]
  --ini-path          [$ini_path]
  --ini-dir           [$ini_dir]
  --configure-options [$configure_options]
  --version           [$version]
  --vernum            [$vernum]
EOF
  exit 1;;
esac

exit 0

Donc zlib est présent, activé, mais en fait non.

Le module de Schrödinger, quoi.

1 J'aime

Au cas où ça vous donnerait une idée (moi, j’ai abandonné l’espoir de retrouver mes propres neurones :smiley: ), voilà la partie de php.ini qui concerne zlib :

; Transparent output compression using the zlib library
; Valid values for this option are 'off', 'on', or a specific buffer size
; to be used for compression (default is 4KB)
; Note: Resulting chunk size may vary due to nature of compression. PHP
;   outputs chunks that are few hundreds bytes each as a result of
;   compression. If you prefer a larger chunk size for better
;   performance, enable output_buffering in addition.
; Note: You need to use zlib.output_handler instead of the standard
;   output_handler, or otherwise the output will be corrupted.
; http://php.net/zlib.output-compression
zlib.output_compression = 4096

; http://php.net/zlib.output-compression-level
zlib.output_compression_level = -1

; You cannot specify additional output handlers if zlib.output_compression
; is activated here. This setting does the same as output_handler but in
; a different order.
; http://php.net/zlib.output-handler
;zlib.output_handler =

et le contenu du .htaccess présent à la racine du sous-domaine test :

<IfModule mod_headers.c>
    # Servir des fichiers CSS et JS compressés avec gzip, s'ils existent, et
    # si le client accepte gzip.
    RewriteCond "%{HTTP:Accept-encoding}" "gzip"
    RewriteCond "%{REQUEST_FILENAME}\.gz" -s
    RewriteRule "^(.*)\.(css|js)"         "$1\.$2\.gz" [QSA]

    # Servir des types de contenus corrects, et empêcher mod_deflate
    # d'effectuer un double gzip.
    RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1]
    RewriteRule "\.js\.gz$"  "-" [T=text/javascript,E=no-gzip:1]


    <FilesMatch ".(js|css|xml|gz|html)$">
      # Servir le type de codage correct.
      Header append Content-Encoding gzip

      # Force les mandataires à mettre en cache séparément les fichiers
      # css/js gzippés & non gzippés.
      Header append Vary Accept-Encoding
    </FilesMatch>
</IfModule>

# GZIP compression for text files: HTML, CSS, JS, Text, XML, fonts
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
</IfModule>

Si vous avez des pistes, je suis preneur :slight_smile: merci !

edit : de mieux en mieux :cry:

1 J'aime

C’est toujrosu le probleme quand on a une machine prod/dev en meme temps.
Mieux vaut utiliser des dockers dans ce cas là, chacun a ses propres librairies comme ca

C’est clair qu’on va devoir en profiter, une fois toutes les mises à jour faites, pour repartir sur quelque chose de sain…

En attendant le retour de l’admin qui a compilé ces différentes versions de PHP, je pense que le mieux à faire… est de ne rien faire :confused: ça attendra pour les essais sur SMF, tant pis.

Au moins, je sais ce qu’il ne faut pas faire par la suite ^^

Merci pour vos réponses et vos tentatives d’aide, en tout cas :slight_smile:

2 J'aime

On en causera à l’occasion sur la Couronne, il y a des alternatives à la compilation qui posent moins de souci quand on tourne sur Debian, et qui permettent quand même de piocher dans un large panel de versions de PHP, installables en parallèle.

À titre pro j’utilisais en particulier le depôt qu’a proposé @AnatomicJC, qui en ce moment donne accès à toutes les versions de PHP entre la 5.6 et la 8.1.

Yep, j’ai vu ça. Sauf qu’une fois que c’est mis en place avec des versions compilées, c’est plus compliqué de revenir en arrière.

Concrètement, on n’a pas besoin d’aller plus loin que la 7.1 : vBulletin 4 ne prend pas en charge au-delà. Et phpBB3.3.4 ainsi que SMF 2.1RC4 ne nécessitent pas plus récent, voire ne les prennent pas forcément en charge.

Bref, le mieux serait dans l’idéal de repartir d’une base totalement saine en terme d’installation ; pas forcément ultra-compliqué mais j’ai jamais installé de serveur, j’ignore totalement si la config post-installation est complexe au niveau de notre serveur en particulier (parce que oui, chaque cas est évidemment particulier en la matière et on trouve dix mille problèmes différents sur le Net pour une seule et même version de Debian…).

1 J'aime

De fait alors pas besoin de compiler.
Il suffit d’utiliser les packages debian.

Pas si simple si la production actuelle est sur PHP 5.4, qui plus est un build custom :wink:

1 J'aime