Aller au contenu principal
Sujet résolu
Ce sujet a été marqué résolu et ne nécessite aucune autre attention.
Sujet: Mise à jour de Leap 15.1 vers PHP7.3.11 (Lu 146 fois) sujet précédent - sujet suivant

Mise à jour de Leap 15.1 vers PHP7.3.11

Bonjour

J'ai fini l'installation de mon serveur Nextcloud sous Leap 15.1
J'ai utilisé la version d'origine de PHP : PHP 7.2.5 puis j'ai vu une alerte de sécurité sur le forum de Nextcloud recommandant de mettre à jour vers PHP7.2.24 ou 7.3.11
Tant qu'à faire, j'ai voulu passer en 7.3 qui a eu durée de vie plus longue mais j'ai quelques soucis que voici.

Tout d'abord, j'ai ajouté le dépôt : home:illuusio:php-next  
Puis j'ai lancé la mise à jour de PHP7 sous YAST. J'ai alors plein de mise à jour de modules complémentaires (7.2.5 vers 7.3.11).
Le redémarrage du service php-fpm se passe sans erreur dans la console (sudo systemctl restart php-fpm).
J'ai aussi redémarré le serveur nginx sans erreur (sudo systemctl restart nginx).

Par contre, en me connectant à mon serveur nextcloud, j'obtiens un message : Internal server error.

En fouinant un peu dans les logs de nextcloud, je trouve des alertes liées aux modules php7-apcu et php7-imagick.

D'ailleurs, bien qu'il n'y ait pas eu d'erreur au démarrage du service php-fpm, la commande php -v renvoie un message intéressant :
Kris@linux-arpr:~> php -v
PHP Warning:  PHP Startup: Unable to load dynamic library 'apcu.so' (tried: /usr/lib64/php7/extensions/apcu.so (/usr/lib64/php7/extensions/apcu.so: undefined symbol: _zval_ptr_dtor), /usr/lib64/php7/extensions/apcu.so.so (/usr/lib64/php7/extensions/apcu.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'imagick.so' (tried: /usr/lib64/php7/extensions/imagick.so (/usr/lib64/php7/extensions/imagick.so: undefined symbol: _zval_ptr_dtor), /usr/lib64/php7/extensions/imagick.so.so (/usr/lib64/php7/extensions/imagick.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP 7.3.11 (cli) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies

En regardant les mises à jour, il semble effectivement que les modules php7-apcu et php7-imagick n'aient pas été mis à jour. J'ai essayé de les mettre à jour spécifiquement en cherchant dans les dépots communautaires mais cela n'a rien changé.

Est-ce que quelqu'un a déjà essayé de mettre à jour Leap 15.1 avec PHP7.3.1 ?

Pour info, j'ai finalement mis à jour en 7.2.24 grâce au dépot : home:ecsos:server:Sabre et c'est passé comme une lettre à la poste. 8)
Par contre, j'ai l'application Passwords de Nextcloud qui ne supportera plus PHP7.2 en début 2020 et je reste fortement intéressé par passer en 7.3

Merci pour votre aide!

Re : Mise à jour de Leap 15.1 vers PHP7.3.11

Répondre #1
Bonsoir,
Plutôt que des dépôts "home", je te recommande plus l'usage de https://download.opensuse.org/repositories/devel:/languages:/php/openSUSE_Leap_15.1/

Tu pourras installer ton php en 7.3:
- supprime les autres dépôts
- supprime tous les paquets php installés:
zypper rm -u php*
- ajoute le dépôt:
Citer
zypper ar -f http://download.opensuse.org/repositories/devel:/languages:/php/openSUSE_Leap_15.1/ php-devel
- installe ton php et les bibliothèques dont tu as besoin

Re : Mise à jour de Leap 15.1 vers PHP7.3.11

Répondre #2
Bonsoir sogal.

Merci une nouvelle fois pour ton aide.

Je viens de faire ce que tu conseilles mais j'ai toujours les mêmes problèmes avec php7-apcu et php7-imagick.

php -v renvoie les mêmes erreurs.

As-tu déjà vu cela ?

Merci.

Re : Mise à jour de Leap 15.1 vers PHP7.3.11

Répondre #3
Et si tu forces les mises à jour des libs PHP depuis ce dépôt ?

zypper dup --from php-devel
(où php-devel est le nom du dépôt php ajouté précédemment)

Dans le message d'erreur il dit qu'il ne peut pas trouver les fichiers. Sont-ils bel et bien présents ?

Re : Mise à jour de Leap 15.1 vers PHP7.3.11

Répondre #4
Re-

tu as mis le doigt sur quelque chose. Voici le retour de la commande pour forcer la mise à jour depuis le dépôt php-devel (zypper dup --from php-devel):

Chargement des données du dépôt...
Lecture des paquets installés...
Calcul de la mise à niveau de la distribution...

Problème : problème avec le paquet installé php7-test-7.2.5-lp151.6.13.1.x86_64
 Solution 1 : installer php7-test-7.3.11-lp151.223.1.x86_64 (avec changement de fournisseur)
  openSUSE  -->  obs://build.opensuse.org/devel:languages:php
 Solution 2 : conserver php7-test-7.2.5-lp151.6.13.1.x86_64 obsolète

Choisir une des solutions ci-dessus en tapant son numéro ou bien annuler en tapant 'a' [1/2/a/d/?] (a): Résolution des dépendances...
Calcul de la mise à niveau de la distribution...

Problème : php7-imagick-3.4.3-lp151.7.1.x86_64 requiert php(api) = 20170718, mais cette dépendance ne peut pas être fournie
  fournisseurs non installables : php7-7.2.5-lp151.5.44.x86_64[repo-oss]
                   php7-7.2.5-lp151.6.12.1.i586[repo-update]
                   php7-7.2.5-lp151.6.12.1.x86_64[repo-update]
                   php7-7.2.5-lp151.6.13.1.i586[repo-update]
                   php7-7.2.5-lp151.6.13.1.x86_64[repo-update]
                   php7-7.2.5-lp151.6.3.1.i586[repo-update]
                   php7-7.2.5-lp151.6.3.1.x86_64[repo-update]
                   php7-7.2.5-lp151.6.6.1.i586[repo-update]
                   php7-7.2.5-lp151.6.6.1.x86_64[repo-update]
                   php7-7.2.5-lp151.6.9.1.i586[repo-update]
                   php7-7.2.5-lp151.6.9.1.x86_64[repo-update]
                   php7-test-7.2.5-lp151.6.12.1.i586[repo-update]
                   php7-test-7.2.5-lp151.6.12.1.x86_64[repo-update]
 Solution 1 : Les actions suivantes seront exécutées :
  installer php7-7.2.5-lp151.6.13.1.x86_64 depuis le dépôt exclu
  installer php7-zlib-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-zip-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-xmlwriter-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-xmlreader-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-tokenizer-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-sqlite-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-posix-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-pdo-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-pcntl-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-openssl-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-opcache-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-mysql-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-mbstring-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-ldap-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-json-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-intl-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-iconv-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-gmp-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-gd-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-fpm-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-fileinfo-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-exif-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-dom-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-curl-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-ctype-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-bz2-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
 Solution 2 : Les actions suivantes seront exécutées :
  désinstallation de php7-imagick-3.4.3-lp151.7.1.x86_64
  désinstallation de php7-APCu-5.1.11-lp151.2.3.x86_64
 Solution 3 : ne pas installer php7-test-7.3.11-lp151.223.1.x86_64
 Solution 4 : casser php7-imagick-3.4.3-lp151.7.1.x86_64 en ignorant certaines de ses dépendances

Choisir une des solutions ci-dessus en tapant son numéro ou bien annuler en tapant 'a' [1/2/3/4/a/d/?] (a): Résolution des dépendances...
Calcul de la mise à niveau de la distribution...

Problème : php7-APCu-5.1.11-lp151.2.3.x86_64 requiert php(api) = 20170718, mais cette dépendance ne peut pas être fournie
  fournisseurs non installables : php7-7.2.5-lp151.5.44.x86_64[repo-oss]
                   php7-7.2.5-lp151.6.12.1.i586[repo-update]
                   php7-7.2.5-lp151.6.12.1.x86_64[repo-update]
                   php7-7.2.5-lp151.6.13.1.i586[repo-update]
                   php7-7.2.5-lp151.6.13.1.x86_64[repo-update]
                   php7-7.2.5-lp151.6.3.1.i586[repo-update]
                   php7-7.2.5-lp151.6.3.1.x86_64[repo-update]
                   php7-7.2.5-lp151.6.6.1.i586[repo-update]
                   php7-7.2.5-lp151.6.6.1.x86_64[repo-update]
                   php7-7.2.5-lp151.6.9.1.i586[repo-update]
                   php7-7.2.5-lp151.6.9.1.x86_64[repo-update]
                   php7-test-7.2.5-lp151.6.12.1.i586[repo-update]
                   php7-test-7.2.5-lp151.6.12.1.x86_64[repo-update]
 Solution 1 : Les actions suivantes seront exécutées :
  installer php7-7.2.5-lp151.6.13.1.x86_64 depuis le dépôt exclu
  installer php7-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-zlib-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-zip-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-xmlwriter-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-xmlreader-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-tokenizer-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-sqlite-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-posix-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-pdo-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-pcntl-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-openssl-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-opcache-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-mysql-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-mbstring-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-ldap-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-json-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-intl-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-iconv-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-gmp-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-gd-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-fpm-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-fileinfo-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-exif-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-dom-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-curl-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-ctype-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
  installer php7-bz2-7.2.5-lp151.6.13.1.x86_64 (avec changement de fournisseur)
    obs://build.opensuse.org/devel:languages:php  -->  openSUSE
 Solution 2 : désinstallation de php7-APCu-5.1.11-lp151.2.3.x86_64
 Solution 3 : ne pas installer php7-test-7.3.11-lp151.223.1.x86_64
 Solution 4 : casser php7-APCu-5.1.11-lp151.2.3.x86_64 en ignorant certaines de ses dépendances

Choisir une des solutions ci-dessus en tapant son numéro ou bien annuler en tapant 'a' [1/2/3/4/a/d/?] (a): Résolution des dépendances...
Calcul de la mise à niveau de la distribution...

Le paquet suivant va être mis à jour :
  php7-test

Le paquet suivant va changer de fournisseur :
php7-test
  openSUSE -> obs://build.opensuse.org/devel:languages:php

1 paquet à mettre à jour, 1 à changer de fournisseur.
Taille de téléchargement totale : 328,9 KiB. Déjà en cache : 0 B. Après l'opération, 97,2 KiB d'espace disque supplémentaire sera utilisé.
Continuer ? [o/n/v/...? affiche toutes les options] (o): Récupération de paquet php7-test-7.3.11-lp151.223.1.x86_64 (1/1), 328,9 KiB (  2,6 MiB décompressé)
Récupération : php7-test-7.3.11-lp151.223.1.x86_64.rpm [fait]

Recherche de conflits de fichiers : [...fait]
(1/1) Installation de : php7-test-7.3.11-lp151.223.1.x86_64 [...........fait]
 

php7-apcu et php7-imagick finissent par poser un problème de dépendance : ils requièrent php(api) = 20170718, mais cette dépendance ne peut pas être fournie...
Pour continuer l'installation, je n'ai eu d'autre choix que de casser ces dépendances (enfin, je crois). Mais au final, php -v renvoie les mêmes erreurs (Unable to load dynamic library 'apcu.so' and 'imagick.so').

Les fichiers /usr/lib64/php7/extensions/apcu.so (et imagick.so) existent bien.

Cela se corse.. ??



Re : Mise à jour de Leap 15.1 vers PHP7.3.11

Répondre #6
Merci. J'ai ajouté ce dépôt mais j'ai toujours le même problème  :'(

php -v me renvoie les erreurs par rapport aux modules apcu et imagick

zypper dup pour les 2 nouveaux dépôts n'aboutit pas car requiert php(api) = 20170718

D'ailleurs, c'est quoi ce php(api) 20170718 ??  >:(

D'autres idées de quelqu'un ? (ne te décourage pas sogal !  :)) )

Re : Mise à jour de Leap 15.1 vers PHP7.3.11

Répondre #7
Me revoilà  ;D

En fait, sogal avait la solution mais j'ai dû mal m'y prendre.

Voilà ce qui a fonctionné :

zypper rm -u php*
zypper ar -f http://download.opensuse.org/repositories/devel:/languages:/php/openSUSE_Leap_15.1/ php-devel
zypper addrepo https://download.opensuse.org/repositories/server:php:extensions:php7/php7_openSUSE_Leap_15.1/server:php:extensions:php7.repo
zypper in php7 php7-APCu php7-bz2 php7-ctype php7-curl php7-dom php7-exif php7-fileinfo php7-fpm php7-gd php7-gmp php7-iconv php7-imagick php7-intl php7-json php7-ldap php7-mbstring php7-mysql php7-opcache php7-openssl php7-pcntl php7-pdo php7-posix php7-tokenizer php7-xmlreader php7-xmlwriter php7-zip  php7-zlib

Attention de bien sauvegarder ses fichiers de configuration PHP. Dans la manœuvre, le fichier /etc/php7/cli/php.ini a été remplacé par un nouveau.

Et me voici donc avec un serveur NEXTCLOUD en PHP7.3.11 !  8)

MERCI SOGAL

A+

PS : si je veux garder NGINX et MARIADB à jour, quelqu'un aurait-il un suggestion de dépôts comme ceux de "devel" ci-dessus ?

Re : Mise à jour de Leap 15.1 vers PHP7.3.11

Répondre #8
Salut,
Très bien tout ça.
Pour Nginx et MariaDB je doute que ce soit vraiment nécessaire dans la mesure où ta Leap 15.1 reçoit régulièrement des mises à jour de sécurité. Tu n'auras peut-être pas la toute dernière version (mais est-ce un besoin réel pour faire fonctionner Nextcloud ? pour en administrer plusieurs je sais que non :) ) mais la version que tu as sera à jour en terme de sécurité.

Re : Mise à jour de Leap 15.1 vers PHP7.3.11

Répondre #9
Merci sogal pour tes conseils avisés.
Je laisse donc NGINX et MARIADB tranquille.
À bientôt