Błąd instalacji Linux Drush: Niezdefiniowana stała klasy „MYSQL_ATTR_SSL_CA” w phar: ///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php, wiersz 56

11

Próbowałem zainstalować Drush przy użyciu obu metod wymienionych w dokumentacji drush.org. Myślę, że mogą być ze sobą w konflikcie, jeśli to możliwe.

Po uruchomieniu composer global require drush/drushwszystkie komponenty wydają się instalować poprawnie. Jednak po przejściu na witrynę Drupal (za pomocą XAMPP, / opt / lampp / htdocs / sitefolder) i uruchamianiu pojawia drush statussię następujący błąd:

Błąd krytyczny PHP: Niezdefiniowana stała klasy „MYSQL_ATTR_SSL_CA” w phar: ///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php on line 56 Komenda Drush zakończyła się nieprawidłowo z powodu niemożliwego do naprawienia błędu.
[błąd] Błąd: niezdefiniowana stała klasy „MYSQL_ATTR_SSL_CA” w phar: ///usr/local/bin/drush/lib/Drush/Sql/Sqlmysql.php, wiersz 56

Mam następujący wiersz w moim ~ / .bashrc:

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

Niestety nie wiem, jak rozwiązać problem z tego miejsca, ponieważ wydaje się, że nie ma łatwego sposobu na odinstalowanie Drusha za pomocą głównej metody ( http://docs.drush.org/en/master/install/ ), która chyba nie działało dla mnie. composer global remove drush/drushwydaje się działać poprawnie.

Z góry dziękuję.

Chris Bauer
źródło
To zabawne, wczoraj opublikowałem podobny wątek i usunąłem go, gdy jeden z użytkowników powiedział mi, że to błąd.
JohnDoea
Zgłosiłem to jako błąd w githubie Drusha. Czy używasz WSL? Zdarzyło mi się w WSL, ale nie w Ubuntu.
JohnDoea

Odpowiedzi:

20

W moim przypadku nie wszystkie pakiety PHP przeszły przez aktualizację Ubuntu do wersji 16.04 (która teraz domyślnie uruchamia PHP 7). Musiałem dodać brakujący, a potem Drush znów zaczął działać:

sudo apt install php-mysql

Lub dla użytkowników php5

sudo apt install php5-mysql 

na bardzo ostatnich dystrybucjach Ubuntu / Debian.

Dla PHP 7.1:

sudo apt install php7.1-mysql

Dla PHP 7.2:

sudo apt install php7.2-mysql

Możesz wyszukać swoją wersję za pomocą:

apt-cache search php-mysql
colan
źródło
1

Poszedłem trochę do króliczej dziury na tym, ale myślę, że problem związany był z drush łączeniem z odpowiednią wersją mysql. Potrzebuje wersji XAMPP, a nie mojej lokalnej wersji Linux. Dodanie tych dwóch wierszy do ~ / .bashrc pomogło:

export DRUSH_PHP=/opt/lampp/bin/php

export PATH=$PATH:/opt/lampp/bin
Chris Bauer
źródło
0

miałem ten sam problem na Fedorze 25. zaktualizowałem php 5.6.32 z 5,60 30 i zaniedbałem przełącznik w kompilacji 32.

wykonanie php -m pokazało, że 5.6.32 zaniedbało mieć moduł „pdo_mysql”. Wróciłem do wersji 5.6.30, w której ten moduł jest wkompilowany, dopóki nie zdołałem debugować kompilacji 5.6.32.

po tej zmianie Drush 8 działał dobrze.

jamesd
źródło
0

Upewnij się, że masz najbardziej aktualne rozszerzenia dla swojej wersji PHP. Możesz znaleźć listę podstawowych elementów, które powinieneś zainstalować w komentarzach na stronie dokumentacji PHP pod uaktualnieniem do 7.1.

Zalecają uruchomienie: 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

Jeśli tego nie zrobisz, będziesz mieć co najmniej problemy z mbstring, ponieważ jest to podstawowa zależność. Jest to również potencjalne rozwiązanie dla zbyt powszechnego błędu „easyrdf / easyrdf 0.9.1 wymaga ext-mbstring * -> w systemie brakuje żądanego rozszerzenia mbstring PHP.” kiedy biegniemy composer installpo raz pierwszy. W przypadku różnych wersji wystarczy go odpowiednio wyłączyć. Większość z nich jest prawdopodobnie taka sama.

Mam nadzieję, że komuś pomoże.

Fei Lauren
źródło