Laravel 5.4 на PHP 7.0: исключение PDO - не удалось найти драйвер (MySQL)c

У меня есть проект Laravel 5.4 на моем Ubuntu 14.04 (VPS с Plesk 12.5.30). После создания базы данных и настройки файла .env с необходимой информацией я запустил php artisan migrate и исключения были брошены:

[Осветите \Database\QueryException]
не удалось найти драйвер (SQL: select * from information_schema.tables, где table_schema = pmaramaldb и table_name = migrations)

[PDOException]
не смог найти водителя

Мой файл .env имеет:

DB_CONNECTION = MySQL

DB_HOST = 127.0.0.1

DB_PORT = 3306

DB_DATABASE = pmaramaldb

DB_USERNAME = пользователь

DB_PASSWORD= пароль

Я следовал большинству руководств, чтобы решить эту ошибку, и никаких положительных результатов не было:

Включение решения для расширения:

PDO включен

Файл php.ini генерируется автоматически, я думаю, это сделано Plesk. В начале файла он говорит:

; ВНИМАНИЕ!
;
; НЕ МОДИФИЦИРУЙТЕ ЭТОТ ФАЙЛ, ПОТОМУ ЧТО ЭТО БЫЛО Сгенерировано АВТОМАТИЧЕСКИ,
; ТАК ЧТО ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯТЬ В СЛЕДУЮЩЕМ ВРЕМЕНИ, ЧТОБЫ ФАЙЛ СОЗДАН

Так что я все равно попробовал. После этого я перезапустил Apache, а затем попытался снова... Не сработало.

Установка php7.0-mysql Решение:

Я также пытался установить MySQL в случае, если это не так:

user @ server: / var / www / vhosts $ sudo apt-get установить php7.0-mysql

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias

Информация о состоянии... Hecho

php7.0-mysql уже самая новая версия.

0 actualizados, 0 se instalarán, 0 para устранения ar y 67 нет актуализаций.

** SQL Lite Установить решение:**

Я также попробовал, поскольку ссылка вопроса говорит: sudo apt-get install php5-sqlite и результат был:

user @ server: /var/www/vhosts/system/maramal.io/etc$ sudo apt-get install php5-sqlite

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias

Информация о состоянии... Hecho

php5-sqlite - это уже самая новая версия.

0 actualizados, 0 se instalarán, 0 para устранения ar y 67 нет актуализаций.

Композитор Дамп-автозагрузка Решение:

Это тоже не сработало. я пробовал composer dump-autoload и это не сработало.

После запуска команды php -i:

PDO

Поддержка PDO => включена

PDO драйверы =>

...

Версия PHP => 5.6.30-1+deb.sury.org~trusty+1

Ну, я не уверен, что это как-то связано с ошибкой, но версия показывается при запуске php -v является:

пользователь @ сервер: ~/ путь $ php -v

PHP 5.6.30-1 + deb.sury.org ~ верный + 1 (cli)

Copyright (c) 1997-2016 The PHP Group

Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
с Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, Zend Technologies

13 ответов

Решение

Существует конфликт между PHP, который используется Apache, и PHP, который связан с командной строкой. (Чаще всего бывает честно).

Что обычно делается:

which php

Это говорит вам, какой php будет определен при запуске в командной строке. например /usr/bin/php

mv /usr/bin/php /usr/bin/php.old

Затем создайте ссылку или скопируйте правильную версию PHP в путь к исполняемому файлу:

ln -s /path/to/php/bin/php /usr/bin/php

или следующее также должно работать.

cp /path/to/php/bin/php /usr/bin/php

Также предлагается, если вы хотите иметь возможность вручную устанавливать моды:

ln -s /path/to/php/bin/phpize /usr/bin/phpize
ln -s /path/to/php/bin/php-config /usr/bin/php-config

Таким образом, ваш CLI будет соответствовать вашему веб-серверу.

В качестве альтернативного решения убедитесь, что вы установили php7-mysql

попробуйте запустить команду ниже

sudo apt install php7.0-mysql

Та же проблема, Ubuntu 17.10, Laravel 5.5.

$ sudo apt install php7.1-pdo php7.1-mysql

Хорошее быстрое решение, надеюсь, это поможет

У меня был тот же сценарий, что и у вас. Я решил мое следующее:

1) на своем терминале наберите

php --ini

это выведет ваш текущий путь к файлу конфигурации php.ini.

2) отредактируйте php.ini, используя vim или предпочитаемый вами редактор.

vim /etc/php.ini

обратите внимание, что /etc/php.ini - это ваш путь к файлу php.ini. это может отличаться на вашей машине.

3) найдите ;extension=php_pdo_mysql.dll и раскомментируйте его, удалив точку с запятой (;)

4) сохранить изменения php.ini / s

** 5) перезапустите веб-сервер, чтобы применить изменения

sudo systemctl перезапустить apache2

** 6) Теперь запустите вашу команду.

php ремесленник мигрировать

надеюсь, это поможет вам.

В Linux так делать

Сначала проверьте свою версию PHP, как это:

php -v

после того, как вы получите номер версии, например, я получаю 7.1, а затем установить, как это

sudo apt-get install  php7.1-sqlite     //for laravel testing with sqlite
sudo apt-get install  php-mysql         //for default mysql
sudo apt-get install  php7.1-mysql      //for version based mysql 
sudo apt-get install  php7.1-common     //for other necessary package for php

и нужно перезагрузить apache2

sudo service apache2 restart

Вы можете попробовать эти следующие команды

php artisan cache:clear
php artisan config:clear  

Затем перезапустите ваш сервер Apache. После этого перенастроить .env файл

Ваш драйвер базы данных отсутствует. Решить пробелем

Сначала установите драйвер

Для Ubuntu: Для базы данных MySQL.

sudo apt-get install php5.6-mysql/php7.2-mysql

Вы также можете искать другие системы баз данных.

Вы также можете искать водителя:

sudo apt-cache search drivername
sudo apt install php7.2-pdo php7.2-mysql

Хорошо, однажды я столкнулся с этой ошибкой... Я не знаю почему, но похоже, что в php 7.3 есть проблема с драйверами или что-то там, что я сделал, переключился обратно на php 7.2, и все работало нормально...

Очистить тайник ремесленника

php artisan cache:clear

а также

php artisan migrate:refresh

вот и все

На самом деле, я уверен, что вы не знаете о своих PHP -версиях и использовали неправильные пути:

Для PHP -версии вашего поставщика ( 5.6 от sury.org) вы должны использовать PHP -команды как "/usr/bin/php", но когда вы используете разные PHP -версии, как, например, из Plesk, у вас разные пути:

/opt/plesk/php/5.2/bin/php -v
/opt/plesk/php/5.3/bin/php -v
/opt/plesk/php/5.4/bin/php -v
/opt/plesk/php/5.5/bin/php -v
/opt/plesk/php/5.6/bin/php -v
/opt/plesk/php/7.0/bin/php -v
/opt/plesk/php/7.1/bin/php -v

Ваши PHP -команды для возможных дополнительных версий PHP ( 7.0 и 7.1, если вы установили версии PHP sury.org MAIN ppa из https://launchpad.net/~ondrej/+archive/ubuntu/php) будут такими:

/usr/bin/php7.0 -v
/usr/bin/php7.1 -v

Показать установленные модули для каждой версии PHP с помощью строки параметра "-m" и использовать строку параметров "-i" для получения информации (пример):

/opt/plesk/php/7.0/bin/php -m
/opt/plesk/php/7.0/bin/php -i
or
/usr/bin/php7.0 -m
/usr/bin/php7.0 -i

Чтобы использовать "composer", вы также должны использовать полный путь вашего исполняемого файла PHP (пример):

/opt/plesk/php/7.0/bin/php composer-setup.php
or
/usr/bin/php7.0 composer-setup.php

Дополнительные "композитор" - команды тогда:

/opt/plesk/php/7.0/bin/php composer.phar AND-ADDITIONAL-STRINGS/OPTIONS-TO-BE-INCLUDED
or
/opt/plesk/php/7.0/bin/php composer.phar AND-ADDITIONAL-STRINGS/OPTIONS-TO-BE-INCLUDED

Если вы используете WSL2 с докером и недавно произошел инцидент с переключением драйверов базы данных, вы можете попробовать:

      docker ps (to retrieve your app image)
docker exec <app_code> php artisan cache:clear
docker exec <app_code> php artisan config:clear

Для Windows проверьте «C:\Program Files\PHP» или «C:\Program Files (x86)» на наличие файла php.ini.

Оттуда посмотрите ";" и удалите его для:

extension=mysqli extension=pdo_mysql

Если вы используете AMMPS или IIS, вам может потребоваться перезапустить службу.

Другие вопросы по тегам