Multiples versions de PHP... 7.0, 7.1, 7.2, 7.3.... BUG

Bonjour à tous,

Après quelques jours d’errances autour de mon problème, ça commence à se préciser, mais si j’arrive à préciser le problème, je ne parviens pas à le résoudre pour autant:

Objectif à atteindre: installer et faire fonctionner php7.3 et les modules kivontbien.

Pour l’instant: php7.0 tourne, et fonctionne (je crois…)

Ma config: serveur dédié Kimsufi KS-2 avec Debian Buster

#php -v
PHP 7.3.4-2 (cli) (built: Apr 13 2019 19:05:48) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.4-2, Copyright (c) 1999-2018, by Zend Technologies
#apache2 -v
Server version: Apache/2.4.38 (Debian)
Server built:   2019-04-07T18:15:40

Comment sais-je que j’ai un problème ? J’ai mon nextcloud qui me dit que le module curl (et maintenant mbstring) ne sont pas installés…

Comment suis-je arrivé à ce problème ? Mon nexcloud tournait avec php7.0 tranquille… mais il m’indiquait qu’il y avait une MAJ vers nextcloud 16… hors l’updater n’est accessible que si on tourne avec php7.3. Alors j’ai juste fait un “apt install php7.3”, et bim message d’erreur des modules.

Comment je sais que php7.0 semble fonctionner ? ben en faisant “a2enmod php7.0”, et bien j’ai un wordpress qui tourne très bien. Mais dès que je fait “a2enmod php7.3”, ben mon wordpress il ne veut plus fonctionner.

Comment je sais que me problème semble venir d’un conflit entre php7.0 et ph7.3 ? en faisant “phpenmod curl”, j’ai un retour
assez éloquent :

WARNING: Module curl ini file doesn't exist under /etc/php/7.0/mods-available

Hors comme j’ai installé php7.3, et bien le message devrait avoir lieu avec
/etc/php/7.3/mods-available

Quel est le résultat que je veux obtenir ? Que mon wordpress tourne tranquillement (et je suppose qu’en mettant un php7.3 pleinement fonctionnel, ça devrait le faire, et également mon nextcloud avec tous les modules kivontbien. Je pense donc qu’il faut que je fasse une purge des paquets 7.0 pour qu’ensuite le php7.3 soit le seul maître à bord. Mais je ne veux pas tout casser, mes sites sont en production.

  1. Ai-je bien un problème de cohabitation php7.0/php7.3 ?
  2. php7.0 et php7.3 sont-ils cohabitables ? si oui, comment ?
  3. si non, comment virer proprement (et sans tout casser) php7.0 et mettre php7.3 et ses modules kivonbien ?

Merci pour votre patience de lecture.

Bonjour,
Peut-être ce lien te donnera une piste !

Bonjour,

Comment as-tu fait pour avoir PHP 7.0 et PHP 7.3 sur une debian buster, sachant que seule la version 7.3 est disponible dans les dépôts officiels ?
Installer et utiliser plusieurs versions de PHP sur la même machine, sans passer par des conteneurs type docker ou de la virtualisation, est une opération complexe et à haut risque. Je déconseille d’ailleurs fortement la procédure décrite dans le lien donné par Albert.

1 J'aime

Ben c’est simple PHP7.0 avant MAJ vers buster. Puis MAJ vers buster au début de l’été. Puis là MAJ vers php7.3
Tu sembles me confirmer qu’il faut que je me débarrasse de php7.0 à fond…

Ah oui je confirme :wink:
Ce n’est pas normal d’avoir encore du PHP 7.0 après une mise à niveau vers buster.

voici mon php.info, ça pique:

System Linux web.NONYMOUS.fr 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5+deb10u1 (2019-07-19) x86_64
Build Date Mar 8 2019 10:01:24
Server API Apache 2.0 Handler
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc/php/7.0/apache2
Loaded Configuration File /etc/php/7.0/apache2/php.ini
Scan this dir for additional .ini files /etc/php/7.0/apache2/conf.d
Additional .ini files parsed /etc/php/7.0/apache2/conf.d/10-mysqlnd.ini, /etc/php/7.0/apache2/conf.d/10-opcache.ini, /etc/php/7.0/apache2/conf.d/10-pdo.ini, /etc/php/7.0/apache2/conf.d/15-xml.ini, /etc/php/7.0/apache2/conf.d/20-bz2.ini, /etc/php/7.0/apache2/conf.d/20-calendar.ini, /etc/php/7.0/apache2/conf.d/20-ctype.ini, /etc/php/7.0/apache2/conf.d/20-dom.ini, /etc/php/7.0/apache2/conf.d/20-exif.ini, /etc/php/7.0/apache2/conf.d/20-fileinfo.ini, /etc/php/7.0/apache2/conf.d/20-ftp.ini, /etc/php/7.0/apache2/conf.d/20-gd.ini, /etc/php/7.0/apache2/conf.d/20-gettext.ini, /etc/php/7.0/apache2/conf.d/20-iconv.ini, /etc/php/7.0/apache2/conf.d/20-imagick.ini, /etc/php/7.0/apache2/conf.d/20-intl.ini, /etc/php/7.0/apache2/conf.d/20-json.ini, /etc/php/7.0/apache2/conf.d/20-mcrypt.ini, /etc/php/7.0/apache2/conf.d/20-mysqli.ini, /etc/php/7.0/apache2/conf.d/20-pdo_mysql.ini, /etc/php/7.0/apache2/conf.d/20-pdo_pgsql.ini, /etc/php/7.0/apache2/conf.d/20-pdo_sqlite.ini, /etc/php/7.0/apache2/conf.d/20-pgsql.ini, /etc/php/7.0/apache2/conf.d/20-phar.ini, /etc/php/7.0/apache2/conf.d/20-posix.ini, /etc/php/7.0/apache2/conf.d/20-readline.ini, /etc/php/7.0/apache2/conf.d/20-shmop.ini, /etc/php/7.0/apache2/conf.d/20-simplexml.ini, /etc/php/7.0/apache2/conf.d/20-sockets.ini, /etc/php/7.0/apache2/conf.d/20-sqlite3.ini, /etc/php/7.0/apache2/conf.d/20-sysvmsg.ini, /etc/php/7.0/apache2/conf.d/20-sysvsem.ini, /etc/php/7.0/apache2/conf.d/20-sysvshm.ini, /etc/php/7.0/apache2/conf.d/20-tokenizer.ini, /etc/php/7.0/apache2/conf.d/20-wddx.ini, /etc/php/7.0/apache2/conf.d/20-xmlreader.ini, /etc/php/7.0/apache2/conf.d/20-xmlwriter.ini, /etc/php/7.0/apache2/conf.d/20-xsl.ini, /etc/php/7.0/apache2/conf.d/20-zip.ini
PHP API 20151012
PHP Extension 20151012
Zend Extension 320151012
Zend Extension Build API320151012,NTS
PHP Extension Build API20151012,NTS
Debug Build no
Thread Safety disabled
Zend Signal Handling disabled
Zend Memory Manager enabled
Zend Multibyte Support disabled
IPv6 Support enabled
DTrace Support available, disabled
Registered PHP Streams https, ftps, compress.zlib, php, file, glob, data, http, ftp, compress.bzip2, phar, zip
Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv2, tls, tlsv1.0, tlsv1.1, tlsv1.2
Registered Stream Filters zlib., string.rot13, string.toupper, string.tolower, string.strip_tags, convert., consumed, dechunk, bzip2., convert.iconv., mcrypt., mdecrypt.

Et sinon, comment on fait pour que ce soit propre ? lol :wink:

Déjà commencer par vérifier que tu n’as plus que buster dans tes dépôts :

rgrep ^deb /etc/apt

et que la mise à niveau est bien complète :

apt update
apt full-upgrade
root@web:/home/max# rgrep ^deb /etc/apt
/etc/apt/sources.list:deb http://debian.mirrors.ovh.net/debian/ buster main
/etc/apt/sources.list:deb-src http://debian.mirrors.ovh.net/debian/ buster main
/etc/apt/sources.list:deb http://security.debian.org/ buster/updates main
/etc/apt/sources.list:deb-src http://security.debian.org/ buster/updates main
/etc/apt/sources.list:deb http://debian.mirrors.ovh.net/debian buster-backports main

Les deux commandes suivantes ont été faites également. Des MAJ ont été faites.
Pour l’instant Problème persistant. Quelle est la prochaine étape selon toi ?

Que donne

apt-cache policy php php7.0

Ceci permettrait de vérifier que le paquet générique php n’a pas été installé.

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

« On ne perd pas son temps en aiguisant ses outils. »
Proverbe français

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)

root@web:/home/max# apt-cache policy php php7.0
php:
  Installé : (aucun)
  Candidat : 2:7.3+69
 Table de version :
     2:7.3+69 500
        500 http://debian.mirrors.ovh.net/debian buster/main amd64 Packages
php7.0-exif:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-simplexml:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-bz2:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-thrift:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-cli:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-sockets:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-dom:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-sysvmsg:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-remctl:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-fpm:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-gd:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-ftp:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-opcache:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-sysvsem:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-calendar:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-sysvshm:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-fileinfo:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-common:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-posix:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-iconv:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-sqlite3:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-pdo:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-wddx:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-pdo-pgsql:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-json:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-mysqlnd:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-phar:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-readline:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-xml:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-xsl:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-curl:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-zip:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-pgsql:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-shmop:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-mcrypt:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-intl:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-xmlwriter:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-ctype:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-pdo-sqlite:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-gettext:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-mysqli:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-pdo-mysql:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-xmlreader:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-phpdbg:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
libapache2-mod-php7.0:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status
php7.0-tokenizer:
  Installé : (aucun)
  Candidat : (aucun)
 Table de version :
php7.0-mysql:
  Installé : 7.0.33-0+deb9u3
  Candidat : 7.0.33-0+deb9u3
 Table de version :
 *** 7.0.33-0+deb9u3 100
        100 /var/lib/dpkg/status

Il faut installer le paquet générique php, cela devrait déjà un peu remettre les choses d’aplomb :

apt install php libapache2-mod-php

Quand tu installes des paquets php il faut éviter de les installer avec leur numéro de version : installer php et non php7.3, php-zip et non hp7.3-zip, etc. sinon tu auras des problèmes lors des mises à niveau.

Si cela ne suffit pas il faudra ensuite purger tout ce qui php7.0
apt autoremove --purge php7.0\* libapache2-mod-php7.0

Et enfin, éventuellement nettoyer les résidus de configuration :
dpkg -l | grep ^rc | cut -d' ' -f3 | xargs dpkg -P

1 J'aime

Lol, donc là on est dans la situation: “tout est cassé”.

Mon wordpress me disait que mysql n’était pas installé (après un apt install php-mysql, il me dit qu’il n’arrive pas à se connecter à la bdd).

Et mon nextcloud m’affiche une page blanche…

Seul mon php.info fonctionne:

PHP Version 7.3.4-2

System Linux web.NONYMOUS.fr 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5+deb10u2 (2019-08-08) x86_64
Build Date Apr 13 2019 19:05:48
Server API Apache 2.0 Handler
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc/php/7.3/apache2
Loaded Configuration File /etc/php/7.3/apache2/php.ini
Scan this dir for additional .ini files /etc/php/7.3/apache2/conf.d
Additional .ini files parsed /etc/php/7.3/apache2/conf.d/10-mysqlnd.ini, /etc/php/7.3/apache2/conf.d/10-opcache.ini, /etc/php/7.3/apache2/conf.d/10-pdo.ini, /etc/php/7.3/apache2/conf.d/20-calendar.ini, /etc/php/7.3/apache2/conf.d/20-ctype.ini, /etc/php/7.3/apache2/conf.d/20-curl.ini, /etc/php/7.3/apache2/conf.d/20-exif.ini, /etc/php/7.3/apache2/conf.d/20-fileinfo.ini, /etc/php/7.3/apache2/conf.d/20-ftp.ini, /etc/php/7.3/apache2/conf.d/20-gettext.ini, /etc/php/7.3/apache2/conf.d/20-iconv.ini, /etc/php/7.3/apache2/conf.d/20-imagick.ini, /etc/php/7.3/apache2/conf.d/20-json.ini, /etc/php/7.3/apache2/conf.d/20-mbstring.ini, /etc/php/7.3/apache2/conf.d/20-mysqli.ini, /etc/php/7.3/apache2/conf.d/20-pdo_mysql.ini, /etc/php/7.3/apache2/conf.d/20-phar.ini, /etc/php/7.3/apache2/conf.d/20-posix.ini, /etc/php/7.3/apache2/conf.d/20-readline.ini, /etc/php/7.3/apache2/conf.d/20-sass.ini, /etc/php/7.3/apache2/conf.d/20-shmop.ini, /etc/php/7.3/apache2/conf.d/20-smbclient.ini, /etc/php/7.3/apache2/conf.d/20-sockets.ini, /etc/php/7.3/apache2/conf.d/20-sysvmsg.ini, /etc/php/7.3/apache2/conf.d/20-sysvsem.ini, /etc/php/7.3/apache2/conf.d/20-sysvshm.ini, /etc/php/7.3/apache2/conf.d/20-tideways.ini, /etc/php/7.3/apache2/conf.d/20-tokenizer.ini, /etc/php/7.3/apache2/conf.d/20-uploadprogress.ini, /etc/php/7.3/apache2/conf.d/30-ds.ini
PHP API 20180731
PHP Extension 20180731
Zend Extension 320180731
Zend Extension Build API320180731,NTS
PHP Extension Build API20180731,NTS
Debug Build no
Thread Safety disabled
Zend Signal Handling enabled
Zend Memory Manager enabled
Zend Multibyte Support provided by mbstring
IPv6 Support enabled
DTrace Support available, disabled
Registered PHP Streams https, ftps, compress.zlib, php, file, glob, data, http, ftp, phar, smb
Registered Stream Socket Transports tcp, udp, unix, udg, ssl, tls, tlsv1.0, tlsv1.1, tlsv1.2
Registered Stream Filters zlib., string.rot13, string.toupper, string.tolower, string.strip_tags, convert., consumed, dechunk, convert.iconv.*

Donc Php7.3 est bien en route… mais mes sites ne fonctionnent pas… une idée pour remettre les choses d’aplomb ?

Merci.

Le PHP fonctionne et est bien en version 7.3. Tu as peut-être aussi un problème avec mysql, voir le retour de :
systemctl status mysql

De manière générale il faut que tu sois capable d’examiner les logs et l’état des services si tu veux administrer un serveur web.

Et bien, jusqu’à maintenant, je m’en sortais pas trop mal justement en regardant les logs, mais là, j’avoue que je suis un peu (trop) en mode panique.

Et tu as bien mis le doigt sur le pb, mysql ne semble pas en route… ni même installé, car il me dit que le service n’est pas connu… Je vais essayer de déstresser et de reprendre les choses dans l’ordre…

Je ne comprends plus rien, mon système ne veut pas installer mysql… ni client, ni server… (apt install mysql-server, apt install mysql-client)

Et là, illumination… mariadb, et non mysql-server. Le wordpress est revenu… Pas le nexcloud, mais le wordpress est good. Je vais continuer à chercher :wink:

Et on m’annonce à l’oreillette un retour à la normale.
Bisous les amis et grand merci.

Ce tuto, qui est donné dans les liens, je l’ai fait pour un projet personnel, quelle galère. … de passer de php5.6 à php7.x !

Hello,

Tu peux installer plusieurs versions de PHP en te basant sur des dépôts extérieurs :

apt install apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt-get update

En utilisant le mode FPM de PHP tu pourras jongler confortablement avec les versions.
Des exemples existent sur la toile.

Bien à toi