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

11

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.

Lorsque j'exécute, composer global require drush/drushtous 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 statusj'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/ ), qui ne semblait pas fonctionner pour moi. composer global remove drush/drushsemble fonctionner correctement.

Merci d'avance.

Chris Bauer
la source
C'est drôle, hier, j'ai publié un fil similaire et l'ai supprimé après qu'un des utilisateurs m'a dit que c'était un bug.
JohnDoea
Je l'ai signalé comme bug dans Drush github. Utilisez-vous WSL? Cela m'est arrivé en WSL mais pas en Ubuntu.
JohnDoea

Réponses:

20

Dans mon cas, tous les packages PHP n'ont pas réussi à passer par la mise à niveau d'Ubuntu vers 16.04 (qui exécute désormais 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
colan
la source
1

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
Chris Bauer
la source
0

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é.

jamesd
la source
0

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 * -> l'extension PHP demandée mbstring est manquante sur votre système." quand nous courons composer installpour 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.

Fei Lauren
la source