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