web-dev-qa-db-fra.com

Erreur d'installation de Linux Drush: constante de classe non définie 'MYSQL_ATTR_SSL_CA' dans phar: ///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php, ligne 56

J'ai essayé d'installer Drush avec les deux méthodes répertoriées dans la documentation drush.org. Je pense qu'ils pourraient être en conflit les uns avec les autres si c'est possible.

Quand je lance composer global require drush/drush tous les composants semblent s'installer correctement. Cependant, lorsque je passe à un site Drupal (en utilisant XAMPP,/opt/lampp/htdocs/sitefolder) et que j'exécute drush status J'obtiens l'erreur suivante:

Erreur fatale PHP: constante de classe non définie 'MYSQL_ATTR_SSL_CA' dans phar: ///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php sur la ligne 56 La commande Drush s'est terminée anormalement en raison d'une erreur irrécupérable.
[erreur] Erreur: constante de classe non définie 'MYSQL_ATTR_SSL_CA' dans phar: ///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php, ligne 56

J'ai la ligne suivante dans mon ~/.bashrc:

export PATH="$HOME/.composer/vendor/bin:$PATH"

Malheureusement, je ne sais pas comment dépanner à partir d'ici, car il ne semble pas être un moyen facile de désinstaller Drush via la méthode principale ( http://docs.drush.org/en/master/install / ), ce qui ne semblait pas fonctionner pour moi. composer global remove drush/drush semble fonctionner correctement.

Merci d'avance.

11
Chris Bauer

Dans mon cas, tous les packages PHP ne l'ont pas été via la mise à niveau d'Ubuntu vers 16.04 (qui fonctionne maintenant PHP 7 par défaut). J'avais besoin d'ajouter celui qui manquait, puis Drush a recommencé à travailler:

Sudo apt install php-mysql

Ou pour les utilisateurs de php5

Sudo apt install php5-mysql 

sur les distributions Ubuntu/Debian très récentes.

Pour PHP 7.1:

Sudo apt install php7.1-mysql

Pour PHP 7.2:

Sudo apt install php7.2-mysql

Vous pouvez rechercher votre version en utilisant ceci:

apt-cache search php-mysql
20
colan

Je suis descendu un peu dans un trou de lapin sur celui-ci, mais je pense que le problème était lié à une connexion drush à la bonne version de mysql. Il a besoin de la version XAMPP, pas de ma version linux locale. L'ajout de ces deux lignes à ~/.bashrc a aidé:

export DRUSH_PHP=/opt/lampp/bin/php

export PATH=$PATH:/opt/lampp/bin
1
Chris Bauer

eu le même problème sur Fedora 25. j'avais mis à niveau vers php 5.6.32 de 5,60,30 et négligé un commutateur dans la compilation de 32.

faire php -m a montré que 5.6.32 négligeait d'avoir le module "pdo_mysql". Je suis donc revenu à 5.6.30 qui a ce module compilé, jusqu'à ce que je puisse déboguer la compilation 5.6.32.

après ce changement, Drush 8 a très bien fonctionné.

0
jamesd

Assurez-vous que vous disposez des extensions les plus à jour pour votre version de PHP. Vous pouvez trouver une liste des éléments de base que vous devez installer dans les commentaires sur le site de documentation PHP sous la mise à niveau vers 7.1.

Ils recommandent d'exécuter: Sudo apt-get install php7.1 php7.1-cli php7.1-common libapache2-mod-php7.1 php7.1-mysql php7.1-fpm php7.1-curl php7.1-Gd php7.1-bz2 php7.1-mcrypt php7.1-json php7.1-tidy php7.1-mbstring php-redis php-memcached

Si vous ne le faites pas, vous rencontrerez au moins des problèmes avec mbstring car il s'agit d'une dépendance de base. C'est également une solution potentielle pour l'erreur trop courante "easyrdf/easyrdf 0.9.1 nécessite ext-mbstring * -> la demande PHP extension mbstring est manquante sur votre système." Lorsque nous courrons composer install pour la première fois. Pour les différentes versions, il suffit de le désactiver selon les besoins. La plupart d'entre eux sont probablement les mêmes.

J'espère que cela aide quelqu'un.

0
Fei Lauren