Ubuntu 22.04 activation PDO impossible

Petit nouveau ! | 5 Messages

30 août 2022, 17:38

Bonjour,
Le passage de Ubuntu 20.04 à 22.04 a entrainé le passage à php 8.1.
Depuis PDO est inaccessible

Code : Tout sélectionner

php -a PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib/php/20210902/pdo_mysql (/usr/lib/php/20210902/pdo_mysql: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/pdo_mysql.so (/usr/lib/php/20210902/pdo_mysql.so: undefined symbol: pdo_parse_params)) in Unknown on line 0 Interactive shell php >
Idem en mode apache2 sauf que c'est une page blanche.
dbeaver-ce donne accès aux bases sans problème.
En fait, je n'utilise pas réellement mysql mais le fork mariaDB qui jusqu'à aujourd'hui n'a jamais posé problème.

Je tiens à préciser qu'avant de valider mysql en cli, il me disait que PDO n'était pas installé.
La page info.php qui ne contient que

Code : Tout sélectionner

<?php phpinfo();
ne mentionne pas PDO

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9426 Messages

31 août 2022, 10:10

Moi j'aurai tenté :

Code : Tout sélectionner

sudo apt-get --purge remove php-common sudo apt-get install php-common php-mysql
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 5 Messages

31 août 2022, 14:59

Merci @rthur
Après ces opérations : même résultat

Code : Tout sélectionner

php -a PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib/php/20210902/pdo_mysql (/usr/lib/php/20210902/pdo_mysql: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/pdo_mysql.so (/usr/lib/php/20210902/pdo_mysql.so: undefined symbol: pdo_parse_params)) in Unknown on line 0 Interactive shell php >
Mais aussi, le répertoire /etc/php/apache2 n'a pas été créé ce qui explique que la commande
a2enmod php
ERROR: Module php does not exist!
et que info.php ne donne rien

Petit nouveau ! | 5 Messages

01 sept. 2022, 15:34

Bis repetita : on reprend à zéro

Code : Tout sélectionner

[email protected]:~$ sudo apt-get --purge remove php-common
OK
Puis update, upgrade, autoremove, autoclean et snap refresh

Code : Tout sélectionner

[email protected]:~$ sudo apt-get install php-common php-mysql .... [email protected]:~$ php -a La commande « php » n'a pas été trouvée, mais peut être installée avec : sudo apt install php8.1-cli # version 8.1.2-1ubuntu2.3, or sudo apt install php-cli # version 2:8.1+92ubuntu1 [email protected]:~$ sudo apt install php8.1-cli Lecture des listes de paquets... Fait Construction de l'arbre des dépendances... Fait Lecture des informations d'état... Fait Les paquets supplémentaires suivants seront installés : php8.1-opcache php8.1-readline Paquets suggérés : php-pear Les NOUVEAUX paquets suivants seront installés : php8.1-cli php8.1-opcache php8.1-readline ... [email protected]:~$ sudo apt install php-pear .... [email protected]:~$ php -a Interactive shell php > $connexion = new PDO('mysql:host=localhost;dbname=NomDeLaBase;charset=utf8', 'xxxxxxxxxxxxxx', 'xxxxxxxxxxxxx'); php > $connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); php > $requete = "select * from maTable where lower(nom) like 'dupont';"; php > $reponse = $connexion->query($requete); php > print_r ($reponse) ; PDOStatement Object ( [queryString] => select * from adh_foyers where lower(nom) like 'dupont'; ) php > print_r ($connexion) ; PDO Object ( ) php > quit
Tout semble fonctionnel sauf :
[*]Pas de résultat de la requête (l'article existe vraiment)
[*]coup d'œil sur /etc/php/8.1 = le répertoire apache2 n'existe pas, seul cli
Modification de cli/php.ini pour décommenter l'extension pdo_mysql

Code : Tout sélectionner

php -a PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib/php/20210902/pdo_mysql (/usr/lib/php/20210902/pdo_mysql: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/pdo_mysql.so (/usr/lib/php/20210902/pdo_mysql.so: undefined symbol: pdo_parse_params)) in Unknown on line 0 Interactive shell php >
J'ai aussi ré-installé apache2.
Et pourtant les modules semblent y être

Code : Tout sélectionner

[email protected]:~$php -m PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib/php/20210902/pdo_mysql (/usr/lib/php/20210902/pdo_mysql: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/pdo_mysql.so (/usr/lib/php/20210902/pdo_mysql.so: undefined symbol: mysqlnd_get_client_info)) in Unknown on line 0 PHP Warning: Module "PDO" is already loaded in Unknown on line 0 [PHP Modules] ... PDO pdo_mysql ...