8710 sujets

Développement web côté serveur, CMS

Bonjour,

Hier j'ai travaillé (en local) sur mon site, et les pages marchent.
Depuis j'ai vu que plusieurs mises à jour de PHP 7.2 étaient effectuées (via le Gestionnaire de mises à jour d'Ubuntu 16.04).
Aujourd'hui je retourne travailler sur mon site et dès que je fais appel à ma base de données j'ai ce message d'erreur :
DriverException
An exception occured in driver: could not find driver


Je vois que c'est lié à la base de données donc j'ouvre PhpMyAdmin et j'ai ce message :
phpMyAdmin - Erreur
Il manque l'extension mysqli. Veuillez vérifier votre configuration PHP. Voyez notre documentation pour plus de détails.


Je vérifie dans le terminal la version de PHP :
PHP 7.2.2-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Feb  1 2018 16:01:26) ( NTS )


Je tente :
$ sudo apt-get install php-mysqli
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Le paquet php-mysqli est un paquet virtuel fourni par :
  php7.2-mysql 7.2.2-1+ubuntu16.04.1+deb.sury.org+1
  php7.1-mysql 7.1.13-1+ubuntu16.04.1+deb.sury.org+1
  php5.6-mysql 5.6.33-1+ubuntu16.04.1+deb.sury.org+1
  php7.0-mysql 7.0.27-1+ubuntu16.04.1+deb.sury.org+1
Vous devez explicitement sélectionner un paquet à installer.

E: Le paquet « php-mysqli » n'a pas de version susceptible d'être installée


Puis :
$ sudo apt-get install php7.2-mysqli
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Note : sélection de « php7.2-mysql » au lieu de « php7.2-mysqli »
php7.2-mysql est déjà la version la plus récente (7.2.2-1+ubuntu16.04.1+deb.sury.org+1).
0 mis à jour, 0 nouvellement installés, 0 à enlever et 1 non mis à jour.


Et ... ça ne marche toujours pas !

Je sais qu'avec PHP 7.1 j'avais vu comme conseil de dé-commenter extension=php_mysqli.dll dans le fichier php.ini mais je ne trouve pas cette ligne dans le fichier php.ini de PHP 7.2.

Donc, qu'est-ce que je rate ? J'ai cherché sur le net mais je n'ai trouvé aucune réponse.

Merci d'avance pour votre aide.
Modifié par AlexP (01 Feb 2018 - 22:39)
Modérateur
Bonjour,

extension=php_mysqli.dll, c'est pour Windows.

Sur Unbuntu, et avec un peu de chance si les installations/ré-installation successives ont bien fait leur travail, il faut dé-commenter la ligne extension=php_mysqli.so

Amicalement,
Après avoir vérifier les fichiers php/7.2/apache2/php.ini et php/7.2/cli/php.ini et je ne trouve pas extension=php_mysqli.so.
Par contre j'ai ça :
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
;   extension=modulename
;
; For example:
;
;   extension=mysqli
; 
; When the extension library to load is not located in the default extension
; directory, You may specify an absolute path to the library file:
;
;   extension=/path/to/extension/mysqli.so
....
;extension=mysqli


J'ai simplement à dé-commenter ; extension=mysqli ?
Pour le moment j'ai toujours le même message mais dans le fichier ini dans la section [MySQLi] il y a une seule ligne commenté :
; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
;  http://php.net/mysqli.allow_local_infile
 
;mysqli.allow_local_infile = On

C'est à laisser comme ça ?
Modérateur
Bonjour,

Je commencerais par dé-commenter extension=mysqli.

Si ça ne marche toujours pas, il faut chercher où est le fichier "extension=mysqli" sur ton disque dur, et ajouter dans php.ini une ligne du genre :

extension=/path/to/extension/mysqli.so (en replaçant /path/to/extension/ par le chemin correspondant à ta situation).

Amicalement,
J'ai essayé.

Donc dans mon cas le chemin est /usr/lib/php/20170718/

Et en testant php -v je me suis rendu compte que j'ai un problème avec le fichier (mais apparemment le chemin marche :
~$ php -v
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20170718/mysqli.so' (tried: /usr/lib/php/20170718/mysqli.so (/usr/lib/php/20170718/mysqli.so: undefined symbol: mysqlnd_global_stats), /usr/lib/php/20170718//usr/lib/php/20170718/mysqli.so.so (/usr/lib/php/20170718//usr/lib/php/20170718/mysqli.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 'mysqli' (tried: /usr/lib/php/20170718/mysqli (/usr/lib/php/20170718/mysqli: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/mysqli.so (/usr/lib/php/20170718/mysqli.so: undefined symbol: mysqlnd_global_stats)) in Unknown on line 0
PHP 7.2.2-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Feb  1 2018 16:01:26) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.2-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies


Et histoire d'être sûr, dans mon fichier php.ini je dois avoir ça (je n'indique pas les lignes non-modifiées) ?

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
[...]
   extension=/usr/lib/php/20170718/mysqli.so
[...]
extension=mysqli
Bon, j'ai finalement :
- désinstallé PHP,
- réinstallé PHP 7.2,
- changé les droits des fichiers php.ini,
- modifié les fichiers php.ini,
- eu des problèmes avec PHPMyAdmin,
- désinstallé PHPMyAdmin,
- réinstallé PHPMyAdmin,
- ... et pour le moment ça marche, je croise les doigts.