Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/05/2024, à 17:39

Valérie_z

Perte de Mysqli avec PHP 8.2

Bonjour à tous !

J'utilisais PHP 8.1 avec Apache et MySQL sans aucun problème jusqu'à ce que je n'aie la mauvaise idée d'upgrader PHP en 8.2. Cette dernière version n'est plus disponible sur les dépôts standards, j'ai dû ajouter le nouveau PPA ondrej/php.

Et depuis, tous mes projets qui se connectaient à MySQL par Mysqli ne tournent plus, l'extension n'étant plus disponible.

Quelques vérifications :
PHP info appelé depuis localhost me renvoit bien la version PHP Version 8.2.19, et en effet, plus de section Mysqli.
En me rendant sur PHP MyAdmin, j'ai ce message :

phpMyAdmin - Erreur
Il manque l'extension mysqli. Merci de vérifier la configuration PHP. Voir la documentation pour plus de détails.

La documentation en question et quelques autres recherches comme celle-ci suggèrent d'activer le chargement dynamique dans php.ini.

Côté CLI, on dirait que je suis restée en 8.1, et que mysqli est toujours là

valerie@pc3:~$ php -m | grep mysqli
mysqli
valerie@pc3:~$ php -i | grep "php.ini"
Configuration File (php.ini) Path => /etc/php/8.1/cli
Loaded Configuration File => /etc/php/8.1/cli/php.ini
valerie@pc3:~$ sudo gedit /etc/php/8.2/apache2/php.ini

Conclusion : je suppose que mysqli est absent pour un usage avec la version 8.2 de php, mais pas 8.1. II faudrait donc que je le réinstalle ou que je le reconfigure pour que Apache / PHP 8.2 aille le chercher, mais la modification de /etc/php/8.2/apache2/php.ini (activation de la ligne extension=mysqli) puis rechargement d'Apache ne change absolument rien. D'ailleurs, dans la configuration 8.1, cette option n'était pas active non plus, et cela marchait bien.

Une installation du paquet php8.2-mysql donnant accès à mysqli pour 8.2 fait bien apparaître une section mysqli dans phpinfo, mais toujours pas de connexion web via phpmyadmin (apache redémarré)

Quelqu'un aurait une idée de comment m'en sortir ?
Merci


PC1 : 12e Gen Intel® Core™ i9-12900 x 24 CPU 5.10 GHz - 32.0 Gio de RAM - Sous Ubuntu 22.04.1 LTS (64 bits) - Noyau : 6.8.0-48-generic
PC2 :  Intel® Core™2 CPU 6700 @ 2.66GHz - 3,8 Gio de RAM - Sous Ubuntu 18.04 LTS (64 bits) - Noyau : 4.15.0-197-generic
PC3 : AMD® Ryzen 9 6900HX - 8 coeurs x 4.90 GHz - 32 GO de RAM DDR5 - Sous Ubuntu 22.04.3 LTS (64 bits) - Noyau : 6.5.0-35-generic

Hors ligne

#2 Le 25/05/2024, à 18:21

krodelabestiole

Re : Perte de Mysqli avec PHP 8.2

Valérie_z a écrit :

j'ai dû ajouter le nouveau PPA ondrej/php.

c'est pas faute de déconseiller ce dépôt autant que possible partout dans la doc et sur le forum....
https://doc.ubuntu-fr.org/php#conflits_ … ons_de_php

il a évidemment son entrée dans les sujets récurrents : 7.1.1 Ondřej Surý
il peut quand-même être utile... à repérer une documentation moisie.


là tu fais sans surprise un gros mélange des fichiers de conf et des modules entre les différentes versions de PHP.
par ailleurs tu n'utilises probablement pas la même version de PHP en ligne de commande et en module d'apache, ce qui contribue à t'embrouiller.

pour installer une version de PHP qui n'est pas dispo nativement sur le système :
https://doc.ubuntu-fr.org/php#ajout_d_u … ion_de_php


pour répondre bêtement à ta question regarde la doc concernant les modules de PHP : https://doc.ubuntu-fr.org/php#associati … de_donnees
il faut que tu installes le module mysql mais le paquet php-mysql ne concerne évidemment pas ta version, mais PHP 8.1.
donc je suppose que tu devrais installer spécifiquement le paquet php8.2-mysql.

ensuite il faudrait ajuster la conf d'apache pour qu'il utilise la bonne version de php, ainsi que l'alias de l'exécutable pour la ligne de commande pour retrouver un système cohérent.
ce que les docs qui conseillent ce PPA oublient bien commodément de préciser...

et tu risques de rencontrer d'autres problèmes de ce genre par la suite (pour chaque module que tu utilises), et d'autres problèmes lors de tes prochaines mise-à-jour majeures.

Hors ligne

#3 Le 25/05/2024, à 18:57

Valérie_z

Re : Perte de Mysqli avec PHP 8.2

Okay,
L'installation spécifique de php8.2-mysql a justement été faite ! (fin premier post). Bien détectée dans phpinfo mais sans effet sur phpmyadmin, par exemple.
Compris pour le dépôt exotique, mais la dernière version de php n'étant plus dispo dans les dépôts standards, tu conseilles quoi pour assainir la situation ? Désinstaller l'actuel 8.2, retirer le dépôt fautif, installer https://doc.ubuntu-fr.org/phpbrew et espérer pouvoir retrouver la 8.2 par ce biais ? Ou récupérer php8.2 voire 8.3 sur le site officiel https://www.php.net/downloads.php ?


PC1 : 12e Gen Intel® Core™ i9-12900 x 24 CPU 5.10 GHz - 32.0 Gio de RAM - Sous Ubuntu 22.04.1 LTS (64 bits) - Noyau : 6.8.0-48-generic
PC2 :  Intel® Core™2 CPU 6700 @ 2.66GHz - 3,8 Gio de RAM - Sous Ubuntu 18.04 LTS (64 bits) - Noyau : 4.15.0-197-generic
PC3 : AMD® Ryzen 9 6900HX - 8 coeurs x 4.90 GHz - 32 GO de RAM DDR5 - Sous Ubuntu 22.04.3 LTS (64 bits) - Noyau : 6.5.0-35-generic

Hors ligne

#4 Le 25/05/2024, à 19:53

krodelabestiole

Re : Perte de Mysqli avec PHP 8.2

Valérie_z a écrit :

L'installation spécifique de php8.2-mysql a justement été faite ! (fin premier post). Bien détectée dans phpinfo mais sans effet sur phpmyadmin, par exemple.

tu as vu ce passage ?

Attention cependant au fait que les modules PHP activés en ligne de commande et via votre serveur HTTP ne sont pas nécessairement les mêmes. La fonction PHP phpinfo() vous montrera les modules activés sur votre serveur web.

https://doc.ubuntu-fr.org/php#lister_les_modules

et celui-ci ?

Les modules sont en principe activés automatiquement lors de l'installation des paquets correspondants. Cependant au fur et à mesure des changements de configuration on peut se retrouver avec des modules installés mais pas activés.

On peut activer / désactiver un module respectivement avec les commandes phpenmod et phpdismod.
Par exemple :

sudo phpenmod mbstring

Par défaut la modification s'applique pour toutes les versions de PHP installées et toutes les SAPI utilisées (CLI, Apache, FPM, etc.)

https://doc.ubuntu-fr.org/php#activerde … es_modules


Valérie_z a écrit :

Désinstaller l'actuel 8.2, retirer le dépôt fautif, installer https://doc.ubuntu-fr.org/phpbrew et espérer pouvoir retrouver la 8.2 par ce biais ?

par exemple, oui.

Valérie_z a écrit :

Ou récupérer php8.2 voire 8.3 sur le site officiel https://www.php.net/downloads.php ?

non. ça consiste à compiler PHP depuis les sources et ce sera infiniment plus le bazar.

si tu as besoin de PHP 8.3, le plus propre est d'installer ubuntu 24.04.


c'est pour un développement perso ?
sinon docker peut s'avérer beaucoup plus simple à utiliser.

Hors ligne

#5 Le 25/05/2024, à 21:43

Valérie_z

Re : Perte de Mysqli avec PHP 8.2

tu as vu ce passage ?

Oui, mais j'essayais de fournir au moins à Apache tous les modules nécessaires en 8.2, même si pas forcément uniforme avec ce que j'avais côté CLI.
Mais peu importe. Le mieux est de rétrograder et en effet passer en docker pour faire simple.

Ceci dit, je me demande quand-même pourquoi la distribution standard de php s'est arrêtée à la 8.1, et pourquoi il n'est pas possible d'upgrader simplement sans avoir à upgrader l'intégralité d'Ubuntu. PHP 8.2 n'est plus compatible avec une 22.04 ?


PC1 : 12e Gen Intel® Core™ i9-12900 x 24 CPU 5.10 GHz - 32.0 Gio de RAM - Sous Ubuntu 22.04.1 LTS (64 bits) - Noyau : 6.8.0-48-generic
PC2 :  Intel® Core™2 CPU 6700 @ 2.66GHz - 3,8 Gio de RAM - Sous Ubuntu 18.04 LTS (64 bits) - Noyau : 4.15.0-197-generic
PC3 : AMD® Ryzen 9 6900HX - 8 coeurs x 4.90 GHz - 32 GO de RAM DDR5 - Sous Ubuntu 22.04.3 LTS (64 bits) - Noyau : 6.5.0-35-generic

Hors ligne

#6 Le 25/05/2024, à 22:13

krodelabestiole

Re : Perte de Mysqli avec PHP 8.2

aujourd'hui ubuntu est utilisé en particulier pour des serveurs.
la rétro-compatibilité des versions majeures de PHP n'est pas assurée (8.2 à 8.3 sont des versions majeures, et 8.2.3 ou 8.2.4 des versions mineures par ex.).

les administrateur·rice·s seraient bien embêté·e·s de voir que leurs sites ou applications web ne fonctionnent plus suite à une mise à jour ordinaire ! hmm

comme je le dis , APT n'est pas fait pour installer plusieurs versions d'un logiciel simultanément :

APT permet de maintenir un système à jour, et d'installer une version d'un logiciel avec ses dépendances à la dernière version proposée par les mainteneurs des dépôts associés à une distro en particulier.
inclure le numéro de version dans le nom du paquet (pour installer plusieurs versions simultanément) c'est un hack grossier, et même si cette technique est parfois employée pour certains logiciels un peu particulier (java par ex.), on ne l'utilise jamais pour des versions mineures. ça mettrait un bordel innommable dans les dépôts et les distros seraient impossibles à maintenir.

c'est pour ça qu'un système correspond à une version de PHP particulière, qui peut être mise à jour sur des versions minimum, qui concerne seulement des corrections de bug ou de failles de sécurité.

aujourd'hui il est ceci dit possible d'utiliser différentes versions sur n'importe quel linux particulièrement grâce à la containérisation (auparavant on devait utiliser des machines virtuelles). donc docker ou distrobox par exemple.

tu n'as pas décrit ton projet plus généralement ?

Hors ligne

#7 Le 25/05/2024, à 22:34

Valérie_z

Re : Perte de Mysqli avec PHP 8.2

D'accord, je vois.

Dans mon cas la conservation de plusieurs versions parallèles ne m'intéresse pas forcément. A la base un simple upgrade de ma version 8.1 en 8.2 m'aurait suffi. Et même simplement cette montée de version n'est pas possible avec APT depuis les dépôts standards, du moins en 22.04 (ie ce lien entre version ubuntu et version php) C'est ce que je trouve dommage....

Merci en tout cas !

Dernière modification par Valérie_z (Le 25/05/2024, à 22:37)


PC1 : 12e Gen Intel® Core™ i9-12900 x 24 CPU 5.10 GHz - 32.0 Gio de RAM - Sous Ubuntu 22.04.1 LTS (64 bits) - Noyau : 6.8.0-48-generic
PC2 :  Intel® Core™2 CPU 6700 @ 2.66GHz - 3,8 Gio de RAM - Sous Ubuntu 18.04 LTS (64 bits) - Noyau : 4.15.0-197-generic
PC3 : AMD® Ryzen 9 6900HX - 8 coeurs x 4.90 GHz - 32 GO de RAM DDR5 - Sous Ubuntu 22.04.3 LTS (64 bits) - Noyau : 6.5.0-35-generic

Hors ligne

#8 Le 26/05/2024, à 02:27

krodelabestiole

Re : Perte de Mysqli avec PHP 8.2

pas de quoi, avec plus d'infos j'aurais peut-être pu te conseiller plus précisément, mais a priori tu devrais t'en sortir avec phpbrew quel que soit ton projet.

Hors ligne

#9 Le 26/05/2024, à 06:46

bruno

Re : Perte de Mysqli avec PHP 8.2

Bonjour,

Valérie_z a écrit :

A la base un simple upgrade de ma version 8.1 en 8.2 m'aurait suffi.

Pour quoi faire ?

Pour remettre les choses en place :

sudo apt install ppa-purge
ppa-purge ppa:ondrej/php

En espérant que cela suffise.

#10 Le 26/05/2024, à 21:28

Valérie_z

Re : Perte de Mysqli avec PHP 8.2

Merci Bruno, c'est fait, et cela a suffi.
Bonne soirée


PC1 : 12e Gen Intel® Core™ i9-12900 x 24 CPU 5.10 GHz - 32.0 Gio de RAM - Sous Ubuntu 22.04.1 LTS (64 bits) - Noyau : 6.8.0-48-generic
PC2 :  Intel® Core™2 CPU 6700 @ 2.66GHz - 3,8 Gio de RAM - Sous Ubuntu 18.04 LTS (64 bits) - Noyau : 4.15.0-197-generic
PC3 : AMD® Ryzen 9 6900HX - 8 coeurs x 4.90 GHz - 32 GO de RAM DDR5 - Sous Ubuntu 22.04.3 LTS (64 bits) - Noyau : 6.5.0-35-generic

Hors ligne