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= пароль
Я следовал большинству руководств, чтобы решить эту ошибку, и никаких положительных результатов не было:
Включение решения для расширения:
Файл 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
Хорошо, однажды я столкнулся с этой ошибкой... Я не знаю почему, но похоже, что в 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, вам может потребоваться перезапустить службу.