我在Ubuntu 14.04上有一个Laravel 5.4项目(VPS与Plesk 12.5.30)。创建数据库并设置包含所需信息的 .env 文件后,我运行了php artisan migrate
并抛出异常:
[照亮\数据库\ QueryException]
找不到驱动程序(SQL:select * from information_schema.tables where table_schema = pmaramaldb and 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 install php7.0-mysql
Leyendo lista de paquetes ... Hecho
Creandoárboldedependencias
Leyendolainformacióndeestado ... Hecho
php7.0-mysql已经是最新版本。
0 actualizados,0seinstalarán,0 para eliminar y 67 no actualizados。
** SQL Lite安装解决方案:**
我也试过question link说: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árboldedependencias
Leyendolainformacióndeestado ... Hecho
php5-sqlite已经是最新版本。
0 actualizados,0seinstalarán,0 para eliminar y 67 no actualizados。
Composer转储自动加载解决方案:
它也没用。我已经尝试了composer dump-autoload
但它没有用。
运行命令php -i
后:
PDO
PDO支持=>启用
PDO drivers =>
...
PHP Version => 5.6.30-1 + deb.sury.org〜可信任+ 1
好吧,我不确定这是否与错误有关,但运行php -v
显示的版本是:
user @ server:〜/ path $ php -v
PHP 5.6.30-1 + deb.sury.org~trusty + 1(cli)
版权所有(c)1997-2016 PHP小组
Zend Engine v2.6.0,版权所有(c)1998-2016 Zend Technologies
Zend Technologies的Zend OPcache v7.0.6-dev,Copyright(c)1999-2016,
答案 0 :(得分:37)
作为替代解决方案,请确保已安装php7-mysql
尝试运行下面的命令
sudo apt install php7.0-mysql
答案 1 :(得分:18)
答案 2 :(得分:11)
Apache使用的PHP与链接到命令行的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
还建议您是否希望能够手动安装mods:
ln -s /path/to/php/bin/phpize /usr/bin/phpize
ln -s /path/to/php/bin/php-config /usr/bin/php-config
这样您的CLI就会与您的网络服务器匹配。
答案 3 :(得分:10)
我有同样的情景。我确实解决了以下问题:
1)在您的终端上输入
php --ini
这将输出您当前的php.ini配置文件路径。
2)使用vim或首选编辑器编辑php.ini。
vim /etc/php.ini
请注意/etc/php.ini是php.ini的路径文件。它可能在您的机器上有所不同。
3)找到; extension = php_pdo_mysql.dll 并通过删除分号(;)
取消注释4)保存您的php.ini更改
** 5)重启Web服务器以应用更改
sudo systemctl restart apache2
** 6)现在运行你的命令。
php artisan migrate
希望这对你有所帮助。
答案 4 :(得分:3)
您可以尝试以下命令
php artisan cache:clear
php artisan config:clear
然后重启你的apache服务器。然后
重新配置您的.env
文件
答案 5 :(得分:3)
您的数据库驱动程序丢失了。解决问题
首先安装驱动程序
对于ubuntu:对于mysql数据库。
sudo apt-get install php5.6-mysql/php7.2-mysql
您还可以搜索其他数据库系统。
您也可以搜索驱动程序:
sudo apt-cache search drivername
答案 6 :(得分:2)
好吧,我曾经遇到过这个错误...我不知道为什么,但是在php 7.3中看起来像是驱动程序有关的问题,或者我所做的事情是切换回php 7.2,并且一切正常。
答案 7 :(得分:1)
清除工匠缓存
php artisan cache:clear
和
php artisan migrate:refresh
就是这样
答案 8 :(得分:0)
实际上,我很确定您不了解您的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版本的命令(如果您从https://launchpad.net/~ondrej/+archive/ubuntu/php安装了sury.org MAIN ppa PHP版本,则为7.0和7.1):
/usr/bin/php7.0 -v
/usr/bin/php7.1 -v
使用" -m"显示每个PHP版本的已安装模块选项字符串并使用" -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
答案 9 :(得分:0)
在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
答案 10 :(得分:0)
sudo apt install php7.2-pdo php7.2-mysql