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

У меня есть проект 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 no актуализированных ситуаций.

** Решение для установки 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 no актуализированных ситуаций.

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

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

После php -i команды 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

Ответ 1

Существует конфликт между 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 будет соответствовать вашему веб-серверу.

Обновить:

Если, как отмечено в этом ответе, если вы используете Ubuntu с несколькими альтернативными установками PHP, вы можете сделать:

sudo update-alternatives --set php /usr/bin/php<version>
sudo update-alternatives --set phar /usr/bin/phar<version>
sudo update-alternatives --set phar.phar /usr/bin/phar.phar<version> 
sudo update-alternatives --set phpize /usr/bin/phpize<version> 
sudo update-alternatives --set php-config /usr/bin/php-config<version>

Ответ 2

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

попробуйте выполнить команду ниже

sudo apt install php7.0-mysql

Ответ 3

Такая же проблема, ubuntu 17.10, Laravel 5.5.

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

введите описание изображения здесь

введите описание изображения здесь

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

Ответ 4

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

1) на вашем терминале введите

php -ini

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

2) отредактируйте php.ini с помощью vim или вашего предпочтительного редактора.

vim/etc/php.ini

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

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

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

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

sudo systemctl restart apache2

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

php artisan migrate

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

Ответ 5

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

php artisan cache:clear
php artisan config:clear  

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

Ответ 6

Отсутствует драйвер базы данных. Для решения зонда

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

Для ubuntu: для базы данных mysql.

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

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

Вы также можете найти драйвер:

sudo apt-cache search drivername

Ответ 7

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

Ответ 8

очистить кэширование

php artisan cache:clear

и

php artisan migrate:refresh

что он

Ответ 9

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

Для версии вашего поставщика PHP (5.6 by 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, если вы установили версии sury.org MAIN ppa PHP из 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

Чтобы использовать "композитор", вы, конечно же, будете использовать полный путь к исполняемому файлу 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

Ответ 10

в 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