Error de instalación de Linux Drush: constante de clase indefinida 'MYSQL_ATTR_SSL_CA' en phar: ///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php, línea 56

11

Intenté instalar Drush con los dos métodos enumerados en la documentación de drush.org. Creo que podrían estar en conflicto entre sí si eso es posible.

Cuando ejecuto composer global require drush/drushtodos los componentes parecen instalarse correctamente. Sin embargo, cuando cambio a un sitio de Drupal (usando XAMPP, / opt / lampp / htdocs / sitefolder) y ejecuto, aparece drush statusel siguiente error:

Error fatal de PHP: Constante de clase indefinida 'MYSQL_ATTR_SSL_CA' en phar: ///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php en la línea 56 El comando Drush terminó anormalmente debido a un error irrecuperable.
[error] Error: constante de clase indefinida 'MYSQL_ATTR_SSL_CA' en phar: ///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php, línea 56

Tengo la siguiente línea en mi ~ / .bashrc:

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

Desafortunadamente, no sé cómo solucionar problemas desde aquí, ya que no parece haber una manera fácil de desinstalar Drush a través del método principal ( http://docs.drush.org/en/master/install/ ), que no parece funcionar para mi composer global remove drush/drushparece ejecutarse con éxito.

Gracias por adelantado.

Chris Bauer
fuente
Es curioso, ayer publiqué un hilo similar y lo eliminé después de que uno de los usuarios me dijera que es un error.
JohnDoea
Lo informé como error en Drush github. ¿Estás usando WSL? Me pasó en WSL pero no en Ubuntu.
JohnDoea

Respuestas:

20

En mi caso, no todos los paquetes de PHP lograron la actualización de Ubuntu a 16.04 (que ahora ejecuta PHP 7 por defecto). Necesitaba agregar el que faltaba, y luego Drush comenzó a trabajar nuevamente:

sudo apt install php-mysql

O para usuarios de php5

sudo apt install php5-mysql 

en distribuciones muy recientes de Ubuntu / Debian.

Para PHP 7.1:

sudo apt install php7.1-mysql

Para PHP 7.2:

sudo apt install php7.2-mysql

Puede buscar su versión usando esto:

apt-cache search php-mysql
colan
fuente
1

Bajé un poco en este agujero, pero creo que el problema estaba relacionado con la conexión drush a la versión adecuada de mysql. Necesita la versión XAMPP, no mi versión de Linux local. Agregar estas dos líneas a ~ / .bashrc ayudó:

export DRUSH_PHP=/opt/lampp/bin/php

export PATH=$PATH:/opt/lampp/bin
Chris Bauer
fuente
0

Tuve el mismo problema en Fedora 25. Me actualicé a php 5.6.32 desde 5,60,30 y descuidé un cambio en la compilación de 32.

haciendo php -m mostró que 5.6.32 descuidó tener el módulo "pdo_mysql". Así que volví a 5.6.30 que tiene ese módulo compilado, hasta que pueda depurar la compilación 5.6.32.

después de este cambio, Drush 8 funcionó bien.

jamesd
fuente
0

Asegúrese de tener las extensiones más actualizadas para su versión de PHP. Puede encontrar una lista de los elementos básicos que debe instalar en los comentarios en el sitio de documentación de PHP en la actualización a 7.1.

Recomiendan ejecutar: 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 no lo hace, al menos tendrá problemas con mbstring, ya que esta es una dependencia central. Esta también es una solución potencial para el error demasiado común "easyrdf / easyrdf 0.9.1 requiere ext-mbstring * -> la extensión PHP solicitada mbstring falta en su sistema". cuando corremos composer installpor primera vez Para diferentes versiones, simplemente cámbielo según corresponda. La mayoría de ellos son probablemente los mismos.

Espero que ayude a alguien.

Fei Lauren
fuente