Differentes versions de PHP

root@www:~# ls -la /usr/bin/ph*
lrwxrwxrwx 1 root root      22 oct.  31  2018 /usr/bin/phar -> /etc/alternatives/phar
lrwxrwxrwx 1 root root      12 juin   5 01:15 /usr/bin/phar7.0 -> phar.phar7.0
lrwxrwxrwx 1 root root      12 févr. 13 17:31 /usr/bin/phar7.3 -> phar.phar7.3
lrwxrwxrwx 1 root root      27 oct.  31  2018 /usr/bin/phar.phar -> /etc/alternatives/phar.phar
-rwxr-xr-x 1 root root   14826 juin   5 01:15 /usr/bin/phar.phar7.0
-rwxr-xr-x 1 root root   14814 févr. 13 17:31 /usr/bin/phar.phar7.3
lrwxrwxrwx 1 root root      21 oct.  31  2018 /usr/bin/php -> /etc/alternatives/php
-rwxr-xr-x 1 root root 4394032 juin   5 01:15 /usr/bin/php7.0
-rwxr-xr-x 1 root root 4777720 févr. 13 17:31 /usr/bin/php7.3
lrwxrwxrwx 1 root root      28 juin  28 16:03 /usr/bin/php-config -> /etc/alternatives/php-config
-rwxr-xr-x 1 root root    4217 févr. 13 17:31 /usr/bin/php-config7.3
lrwxrwxrwx 1 root root      24 juin  28 16:03 /usr/bin/phpize -> /etc/alternatives/phpize
-rwxr-xr-x 1 root root    4984 févr. 13 17:31 /usr/bin/phpize7.3

Ok!.. Je crois que je commence à avoir une petite idée plus ou moins de ce qu’il se passe: notes les lignes suivantes dans ton listing:

lrwxrwxrwx 1 root root      12 juin   5 01:15 /usr/bin/phar7.0 -> phar.phar7.0
lrwxrwxrwx 1 root root      12 févr. 13 17:31 /usr/bin/phar7.3 -> phar.phar7.3
....
-rwxr-xr-x 1 root root   14826 juin   5 01:15 /usr/bin/phar.phar7.0
-rwxr-xr-x 1 root root   14814 févr. 13 17:31 /usr/bin/phar.phar7.3
....
rwxr-xr-x 1 root root 4394032 juin   5 01:15 /usr/bin/php7.0
-rwxr-xr-x 1 root root 4777720 févr. 13 17:31 /usr/bin/php7.3
....

A mon sens, c’est ça qui f…t la m…rde. Moi, voila ce que j’ai:

Renvoies-moi le résultat de la commande suivante SVP:

sudo update-alternatives --display php

Comme je l’ai indiqué il faut purger les paquets PHP 7.0

Il faut aussi désinstaller php-fpm que tu n’utilise probablement pas :

sudo apt purge php-fpm php7.3-fpm

Ensuite en me basant sur ta liste réinstalle ceux qui pourraient manquer :

sudo apt install php-bz2 php-cli php-gd  php-json php-ldap php-mbstring php-mysql php-opcache php-pgsql php-readline php-xml php-zip

Et marque comme installés automatiquement tout ceux avec numéro de version :

sudo apt-mark auto php7* libapache2-mod-php7.3

Et encore une fois update-alternatives est inutile et ne concerne que l’interpréteur php en ligne de commande pas celui fourni par le module Apache.

Oui Bruno1 ta méthode est parfaitement correcte effectivement. Néanmoins lis bien les désidératas de franck67:

Ce en quoi il a raison de se méfier car si je me réfère à la doc PHP il existe effectivement quelques incompatibilités ascendantes entre php 7.0 et les versions supérieurs (cf. ici: https://www.php.net/manual/fr/migration71.incompatible.php). Notes d’ailleurs que d’autre prennent également cette précaution:

Du coup il a bien besoin de php-fpm et de passer par un update-alternatives si il veut avoir les deux versions de PHP sur sa machine. Sur ce point toutes les documentations que j’ai pu lire sur le sujet sont unanymes…

root@www:~# update-alternatives --display php
php - mode manuel
  link best version is /usr/bin/php7.3
 le lien pointe actuellement sur /usr/bin/php7.3
  link php is /usr/bin/php
  slave php.1.gz is /usr/share/man/man1/php.1.gz
/usr/bin/php7.0 - priorité 70
 lien secondaire php.1.gz : /usr/share/man/man1/php7.0.1.gz
/usr/bin/php7.3 - priorité 73
 lien secondaire php.1.gz : /usr/share/man/man1/php7.3.1.gz

Effectivement, tant que php7.3 ne fonctionne pas, je voudrais garder php7.0…

La demande initiale indiquait bien une migration vers Debian 10 pour passer en PHP 7.3 :

Je suppose donc que les problèmes de compatibilité des script PHP utilisés ont été vérifié avant et que ce n’est pas la crainte de @franck67.

Avoir plusieurs versions de PHP sur la même machine est une opération relativement complexe et ce n’est pas le sujet ici. On peut effectivement utiliser php-fpm et des versions différentes, compilées sur place ou avec des dépôts exotiques plus ou moins risqués. On peut aussi utiliser docker pour y mettre une autre version de PHP.
Et vous êtes des têtes de mules avec votre update-alternatives :wink:
On parle d’un interpréteur PHP pour le serveur web (module Apache ou php-fpm) pas de l’interpréteur en ligne de commande !

Effectivement, mon but est de passer en full php 7.3. Mais pour l’instant, lorsque je passe mon apache en 7.3, le php n’est plus interprété… donc je ne vais pas virer le 7.0 tout de suite, sinon mon site ne sera plus accessible

Cela ne fonctionne pas car tu as toujours des paquets en version 7.0 installés. Tant que tu ne feras pas le ménage comme indiqué tu resteras avec un système bancal mélangeant du PHP 7.3 et des paquets en version 7.0 qui n’auront plus de mises à jour de sécurité.

Tu t’es lancé dans une migration vers une version supérieure de Debian, maintenant il faut aller jusqu’au bout. Et de toute façon tu as forcément fait des sauvegardes des données avant, qui te permettront de tout réinstaller rapidement en cas de catastrophe.

C’est une machine virtuelle.
Je suis entrain de faire un dump, comme ca je peux virer php7, et revenir au dump si ca fonctionne plus. Mais c’est bourrin ! :stuck_out_tongue:

Même problème…
malgré le fait que je n’ai plus aucune trace de php7.0, mon apache n’interprete pas le php

Et après un

sudo a2enmod php7.3
sudo service apache2 restart

ça donne quoi?

Je l’avais fait

Redonne :

apt list \*php\* --installed
sudo apache2ctl -t
sudo apache2ctl -M
root@www:~$ apt list \*php\* --installed
En train de lister... Fait
libapache2-mod-php7.0/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 amd64  [installé, local]
libapache2-mod-php7.3/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé]
libapache2-mod-php/stable,now 2:7.3+69 all  [installé]
libawl-php/stable,stable,now 0.60-1+deb10u1 all  [installé, automatique]
php-bz2/stable,now 2:7.3+69 all  [installé, automatique]
php-cli/stable,now 2:7.3+69 all  [installé]
php-common/now 2:84+0~20210621.36+debian9~1.gbp28513e all  [installé, local]
php-composer-ca-bundle/stable,now 1.1.4-1 all  [installé, automatique]
php-composer-semver/stable,now 1.4.2-1 all  [installé, automatique]
php-composer-spdx-licenses/stable,now 1.5.0-1 all  [installé, automatique]
php-composer-xdebug-handler/stable,now 1.3.2-1 all  [installé, automatique]
php-curl/stable,now 2:7.3+69 all  [installé]
php-gd/stable,now 2:7.3+69 all  [installé]
php-intl/stable,now 2:7.3+69 all  [installé]
php-json-schema/stable,now 5.2.8-1 all  [installé, automatique]
php-json/stable,now 2:7.3+69 all  [installé]
php-mbstring/stable,now 2:7.3+69 all  [installé]
php-memcache/stable,now 3.0.9~20170802.e702b5f-2 amd64  [installé]
php-mysql/stable,now 2:7.3+69 all  [installé, automatique]
php-pear/now 1:1.10.12+submodules+notgz+20210212-1+0~20210228.21+debian9~1.gbpf2b98f all  [installé, local]
php-pgsql/stable,now 2:7.3+69 all  [installé, automatique]
php-php-gettext/stable,now 1.0.12-0.1 all  [installé, automatique]
php-phpseclib/stable,now 2.0.14-1 all  [installé, automatique]
php-psr-log/stable,now 1.1.0-1 all  [installé, automatique]
php-ssh2/stable,now 1.1.2+0.13-4 amd64  [installé]
php-symfony-console/stable,stable,now 3.4.22+dfsg-2+deb10u1 all  [installé, automatique]
php-symfony-debug/stable,stable,now 3.4.22+dfsg-2+deb10u1 all  [installé, automatique]
php-symfony-filesystem/stable,stable,now 3.4.22+dfsg-2+deb10u1 all  [installé, automatique]
php-symfony-finder/stable,stable,now 3.4.22+dfsg-2+deb10u1 all  [installé, automatique]
php-symfony-process/stable,stable,now 3.4.22+dfsg-2+deb10u1 all  [installé, automatique]
php-tcpdf/now 6.2.12+dfsg2-1 all  [installé, local]
php-xml/stable,now 2:7.3+69 all  [installé]
php-zip/stable,now 2:7.3+69 all  [installé]
php7.0-bz2/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 amd64  [installé, local]
php7.0-cli/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 amd64  [installé, local]
php7.0-common/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 amd64  [installé, local]
php7.0-gd/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 amd64  [installé, local]
php7.0-json/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 amd64  [installé, local]
php7.0-ldap/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 amd64  [installé, local]
php7.0-mbstring/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 amd64  [installé, local]
php7.0-mysql/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 amd64  [installé, local]
php7.0-opcache/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 amd64  [installé, local]
php7.0-pgsql/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 amd64  [installé, local]
php7.0-readline/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 amd64  [installé, local]
php7.0-xml/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 amd64  [installé, local]
php7.0-zip/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 amd64  [installé, local]
php7.0/now 7.0.33-50+0~20210604.56+debian9~1.gbpa45c80 all  [installé, local]
php7.3-bz2/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé, automatique]
php7.3-cli/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé, automatique]
php7.3-common/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé, automatique]
php7.3-curl/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé, automatique]
php7.3-dev/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé]
php7.3-fpm/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé]
php7.3-gd/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé, automatique]
php7.3-intl/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé, automatique]
php7.3-json/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé, automatique]
php7.3-mbstring/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé, automatique]
php7.3-mysql/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé, automatique]
php7.3-opcache/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé, automatique]
php7.3-pgsql/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé, automatique]
php7.3-readline/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé, automatique]
php7.3-xml/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé, automatique]
php7.3-zip/stable,stable,now 7.3.27-1~deb10u1 amd64  [installé, automatique]
php7.3/stable,stable,now 7.3.27-1~deb10u1 all  [installé, automatique]
php/stable,now 2:7.3+69 all  [installé]
phpmyadmin/now 4:4.6.6-4+deb9u2 all  [installé, local]
pkg-php-tools/stable,now 1.37 all  [installé, automatique]
root@www:~# apache2ctl -t
Syntax OK
root@www:~# apache2ctl -M
Loaded Modules:
 core_module (static)
 so_module (static)
 watchdog_module (static)
 http_module (static)
 log_config_module (static)
 logio_module (static)
 version_module (static)
 unixd_module (static)
 access_compat_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 dav_module (shared)
 dav_fs_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 filter_module (shared)
 headers_module (shared)
 mime_module (shared)
 mpm_prefork_module (shared)
 negotiation_module (shared)
 php7_module (shared)
 proxy_module (shared)
 proxy_connect_module (shared)
 proxy_http_module (shared)
 reqtimeout_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 socache_shmcb_module (shared)
 ssl_module (shared)
 status_module (shared)
 userdir_module (shared)

Tu n’as pas lancé les commandes que j’ai indiquées précédemment (message 24). Tu as toujours des paquets PHP 7.0 installés.

sisi ! j’ai sauvegardé ma VM, lancé toutes tes commandes, constaté que php7.0 n’etait plus la, activé le mod phph7.3, et redémarré apache, mais le php n’etait pas interprété.
du coup, j’ai remis ma VM a son etait initial, car j’ai des sites qui tournent… (message 30 & 31)

Donc pas de dépannage possible :confused:

Et voila!.. CQFD!!.. cf ma première intervention!.. Celle dans laquelle je validais le diagnostique de Bruno1 en rajoutant de stopper le serveur: quelque chose bloque le passage en PHP7.3. Je le savais par expérience puisque j’avais tenter cette manip à plusieurs reprises et échouer systématiquement avec à chaque fois un même résultat: un beau capharnaum qui obligeait la re-installation de l’ensemble. Après il est peut-être vrai que je me fourvois sur les causes de l’échec.

Bon!.. Voila comment je m’en suis tiré à chaque fois:

1 - Désinstaller TOTALEMENT php (donc dans le cas présent PHP 7.0 PHP 7.3 et… PHP tout court!.. en n’oubliant pas bien entendu l’option --purge dans les manoeuvres « apt remove »

2 - Re-installer PHP tout court

3 - Bien entendu ne pas oublier de reconfigurer (par exemple, je vois que dans l’ensemble des modules tu as le module userdir. si tu l’utilise il faut aller bidouiller un peu dans /etc/apache2/mods-available/php7.3.conf)

4- re-démarrer le serveur pour lui faire prendre compte de la manip opéré en 3

L’ensemble de la manip ne devrait pas prendre plus d’un quart d’heure. Evidemment, durant ce temps, le site ne sera pas fonctionnel mais bon!.. Suffit de choisir le bon créneaux horaire vu qu’il fonctionne actuellement en 7.0

Tiens?.. D’ailleurs il est peut-être là le probleme!.. Dans le module userdir.

Comment tu as installé ton site. Ne serait-il pas par hasard dans le home d’un user quelconque? Je sais que cela se pratique parfois. Du coup cela expliquerai pourquoi il fonctionne avec PHP 7.0 et pas PHP7.3.

En effet, lorsqu’on utilise le module userdir il faut, pour que php soit lisible dans le public_html, dans le fichier de configuration de php (/etc/apache2/mods-available/php7.x.conf) commenter toute la partie comme cela:

 #<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
# </IfModule>

Si cela a été fait dans php7.0.conf et pas dans php7.3.conf cela expliquerai pourquoi ça fonctionne avec php7.0 et pas avec php7.3