web-dev-qa-db-fra.com

PHP 7 RC3: Comment installer le PDO MySQL manquant

J'essaie de configurer le serveur Web avec PHP 7 RC3 + Nginx sur Ubuntu 14.04 (à des fins de test).

J'ai installé Ubuntu dans Vagrant avec ubuntu/trusty64 et PHP 7 RC 3 de Ondřej Surý ( https://launchpad.net/~ondrej/+archive/ubuntu/php-7.0 ).

Je n'arrive pas à trouver le moyen d'installer MySQL PDO (PHP voit PDO class mais rien de ce qui est lié à MySQL, comme PDO::MYSQL_ATTR_DIRECT_QUERY etc.)

On dirait qu'il n'y a pas de lib php7.0-mysql (par analogie avec les standards php5-mysqlnd et php7.0-fpm etc. de Ondřej)

Section PDO in phpinfo():

PDO support      enabled
PDO drivers      no value

Comment puis-je l'avoir?

37
SmxCde

Puisque eggyal n'a pas fourni son commentaire comme réponse après avoir donné un bon conseil dans un commentaire - je le poste ici: Dans mon cas, j'ai dû installer le module php-mysql. Voir les commentaires sous la question pour plus de détails.

3
SmxCde

Pour ceux qui utilisent Linux avec Apache2, vous devez installer php-mysql

apt-get install php-mysql

ou si vous utilisez ubuntu 16.04 ou une version ultérieure, exécutez simplement la commande suivante, vous n'avez pas besoin de modifier votre fichier php.ini

apt-get install php7.0-mysql

Si vous utilisez ubuntu 15.10 ou une version antérieure:

Editez votre php.ini fichier et Recherchez pdo_mysql Vous pourriez trouver quelque chose comme ceci

;extension=pdo_mysql.so

Changez-le en ceci

extension=pdo_mysql.so

Enregistrez le fichier et redémarrez Apache

service Apache2 restart

Vérifiez qu'il est disponible dans votre phpinfo ()

81
Angel115

Première installation de php-mysql

Sudo apt-get install php7.0-mysql

puis activez le module

Sudo phpenmod pdo_mysql

et redémarrez Apache

Sudo service Apache2 restart 
19
StateLess

Premièrement, vérifiez si votre php.ini a l'extension "php_pdo_mysql" et "php_mysqli" activée et si le chemin de "extension_dir" est correct Si vous avez besoin d'une des configurations ci-dessus, vous devez redémarrer php-fpm pour appliquer les modifications.

Dans mon cas (où j'utilise le système d'exploitation Windows de l'entreprise, je préfère vraiment OSX ou Linux), j'ai résolu le problème en mettant ces valeurs dans le fichier php.ini:

; ...

extension_dir = "ext"

; ... 

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

; ...

J'espère que ça aide.

3
João Paulo Cercal
  1. téléchargez le code source de PHP 7 et extrayez-le.
  2. ouvrez votre terminal
  3. accéder au répertoire ext/mysqli 
  4. utilisez les commandes:

    phpize

    ./configurer 

    make

    make install (en tant que root) 

  5. active l'extension = mysqli.so dans votre fichier php.ini
  6. terminé!

Cela a fonctionné pour moi

2
micl

Si vous êtes sur Windows et que votre dossier php n'est pas dans votre PATH, vous avez défini le répertoire absolu dans votre php.ini

par exemple:

extension_dir = "C:/php7/ext"

et décommenter 

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

Redémarrez Apache2.4 et cela devrait fonctionner.

J'espère que ça aide.

2
user1455180

Avait le même problème, résolu en activant réellement l'extension dans le php.ini avec le bon nom de fichier. Il était répertorié sous le nom php_pdo_mysql.so mais le nom du module dans/lib/php/modules s'appelait simplement pdo_mysql.so

Supprimez simplement le préfixe "php_" du fichier php.ini, puis redémarrez le service httpd et cela fonctionnera à merveille.

Veuillez noter que j'utilise Arch et que, par conséquent, les noms de chemins et les services peuvent être différents en fonction de votre distribution.

1
Xorifelse

J'ai eu à peu près le même problème. J'ai pu voir que le PDO était activé mais je n'avais aucun pilote disponible (avec PHP 7-RC4). J'ai réussi à résoudre le problème en ajoutant l'extension php_pdo_mysql à celles qui étaient activées.

J'espère que cela t'aides!

1
jgadrow

Je vais commencer par la réponse, puis le contexte. NOTE: ce correctif a été enregistré ci-dessus, je le répète simplement pour quiconque googe.

  1. Téléchargez le code source de PHP 7 et extrayez-le.
  2. ouvrez votre terminal
  3. accéder au répertoire ext/pdo_mysql
  4. utiliser des commandes:

    phpize

    ./configurer

    make

    make install (en tant que root)

  5. active l'extension = mysqli.so dans votre fichier php.ini

Ceci est enregistré comme une réponse à partir d’ici (merci de l’avancer si cela vous a aidé aussi): https://stackoverflow.com/a/39277373/3912517

Contexte: J'essaie d'ajouter LimeSurvey au Docker WordPress standard. Le seul point qui me retient est "bibliothèque de pilotes PHP PDO" qui est "Aucun trouvé"

php -i | grep PDO                                                                                  
PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_odbc' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc.so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  Module 'mysqli' already loaded in Unknown on line 0
PDO
PDO support => enabled
PDO drivers => sqlite
PDO Driver for SQLite 3.x => enabled

Ubuntu 16 (Ubuntu 7.3.0)

apt-get install php7.0-mysql

Résultat:

Package 'php7.0-mysql' has no installation candidate

Obtenez des instructions indiquant que tout ce que je dois faire est d'exécuter ceci:

add-apt-repository -y ppa:ondrej/Apache2

Mais alors je reçois ceci:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 223: ordinal not in range(128)

Donc, j'essaie de forcer un certain type de fichiers UTF: LC_ALL = C.UTF-8 add-apt-repository -y ppa: ondrej/Apache2

Suivez quelques autres instructions pour exécuter ceci: Apt-get update Et j’obtiens ceci: Err: 14 http://ppa.launchpad.net/ondrej/Apache2/ubuntu cosmic/Paquets AMD64 principaux 404 Introuvable Err: 15 http://ppa.launchpad.net/ondrej/php/ubuntu cosmic/main Packages AMD64 404 Not Found Et - je pense à cause de cela - je reçois alors:

The repository 'http://ppa.launchpad.net/ondrej/Apache2/ubuntu cosmic Release' does not have a Release file.

A ce stade, je reçois toujours ceci sur apt-get update:

Package 'php7.0-mysql' has no installation candidate.

Je commence à essayer d'ajouter des bibliothèques php, j'ai des problèmes avec Unicode, j'ai essayé de contourner ça et ... vous avez l'idée ... whack-a-mole. J'ai abandonné et j'ai cherché si je pouvais le compiler et j'ai trouvé la réponse avec laquelle j'avais commencé. 

Vous vous demandez peut-être pourquoi j'ai écrit autant? Pour que quiconque google puisse trouver cette solution (y compris moi!).

0
user3912517