Erro de instalação do Drush do Linux: constante de classe indefinida 'MYSQL_ATTR_SSL_CA' em phar: ///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php, linha 56

11

Tentei instalar o Drush com os dois métodos listados na documentação do drush.org. Eu acho que eles podem estar em conflito um com o outro, se isso for possível.

Quando executo, composer global require drush/drushtodos os componentes parecem instalar corretamente. No entanto, quando mudo para um site Drupal (usando XAMPP, / opt / lampp / htdocs / sitefolder) e executo drush status, recebo o seguinte erro:

Erro fatal do PHP: constante de classe indefinida 'MYSQL_ATTR_SSL_CA' em phar: ///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php na linha 56 O comando Drush foi finalizado de forma anormal devido a um erro irrecuperável.
[erro] Erro: constante de classe indefinida 'MYSQL_ATTR_SSL_CA' em phar: ///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php, linha 56

Eu tenho a seguinte linha no meu ~ / .bashrc:

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

Infelizmente, não sei como solucionar problemas daqui, pois não parece ser uma maneira fácil de desinstalar o Drush pelo método principal ( http://docs.drush.org/en/master/install/ ), que não parecia funcionar para mim. composer global remove drush/drushparece funcionar com sucesso.

Desde já, obrigado.

Chris Bauer
fonte
É engraçado, ontem eu publiquei um tópico semelhante e o apaguei depois que um dos usuários me disse que era um bug.
JohnDoea
Eu relatei isso como bug no Drush github. Você está usando WSL? Aconteceu comigo na WSL, mas não no Ubuntu.
JohnDoea

Respostas:

20

No meu caso, nem todos os pacotes PHP chegaram ao upgrade do Ubuntu para 16.04 (que agora roda o PHP 7 por padrão). Eu precisava adicionar o que faltava e o Drush começou a trabalhar novamente:

sudo apt install php-mysql

Ou para usuários php5

sudo apt install php5-mysql 

em distribuições muito recentes do Ubuntu / Debian.

Para o PHP 7.1:

sudo apt install php7.1-mysql

Para o PHP 7.2:

sudo apt install php7.2-mysql

Você pode procurar sua versão usando este:

apt-cache search php-mysql
colan
fonte
1

Fiz um pouco de uma toca de coelho nesta, mas acredito que o problema estava relacionado ao drush conectado à versão adequada do mysql. Ele precisa da versão XAMPP, não da minha versão linux local. A adição dessas duas linhas ao ~ / .bashrc ajudou:

export DRUSH_PHP=/opt/lampp/bin/php

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

tinha o mesmo problema no Fedora 25. Eu havia atualizado para o php 5.6.32 de 5,60,30 e negligenciei uma opção na compilação de 32.

fazer php -m mostrou que 5.6.32 não tinha o módulo "pdo_mysql". Então, voltei para a 5.6.30, que possui esse módulo compilado, até que eu possa depurar a compilação 5.6.32.

após essa mudança, o Drush 8 funcionou bem.

jamesd
fonte
0

Verifique se você possui as extensões mais atualizadas para sua versão do PHP. Você pode encontrar uma lista dos itens básicos que você deve instalar nos comentários no site de documentação do PHP, sob a atualização para 7.1.

Eles recomendam a execução: 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

Caso contrário, você terá pelo menos problemas com o mbstring, pois essa é uma dependência essencial. Esta também é uma solução potencial para o erro muito comum "easyrdf / easyrdf 0.9.1 requer ext-mbstring * -> a extensão PHP solicitada mbstring está ausente no seu sistema." quando corremos composer installpela primeira vez. Para versões diferentes, basta trocá-lo conforme apropriado. A maioria deles provavelmente é a mesma.

Espero que ajude alguém.

Fei Lauren
fonte