PHP 7.0上的Laravel 5.4:PDO异常 - 找不到驱动程序(MySQL)c

Mar*_*mal 25 php mysql pdo laravel laravel-5

我在我的Ubuntu 14.04上有一个Laravel 5.4项目(VPS与Plesk 12.5.30).创建数据库并设置.env文件时,我运行了所需的信息php artisan migrate并抛出了异常:

[Illuminate\Database\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 =密码

我已经按照大部分指南来解决这个错误,并没有任何积极的结果:

启用扩展解决方案:

PDO已启用

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安装解决方案:**

我也试过问题链接说: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 Dump-autoload解决方案:

它也没用.我试过了composer dump-autoload,但没用.

运行命令后php -i:

PDO

PDO支持=>已启用

PDO驱动程序=>

...

PHP Version => 5.6.30-1 + deb.sury.org~trusty + 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 OPcache v7.0.6-dev,版权所有(c)1999-2016,作者:Zend Technologies

İsm*_*urt 39

作为替代解决方案,请确保您已安装php7-mysql

尝试运行下面的命令

sudo apt install php7.0-mysql
Run Code Online (Sandbox Code Playgroud)


Dev*_*arb 21

同样的问题,ubuntu 17.10,Laravel 5.5.

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

在此输入图像描述

在此输入图像描述

一个很好的快速修复,希望这有帮助


apo*_*fos 15

Apache使用的PHP与链接到命令行的PHP之间存在冲突.(更常见的是它应该诚实).

通常做的是:

which php
Run Code Online (Sandbox Code Playgroud)

这告诉您在命令行中运行时将预览哪个php.例如/usr/bin/php

mv /usr/bin/php /usr/bin/php.old
Run Code Online (Sandbox Code Playgroud)

然后将正确的PHP版本链接或复制到可执行路径:

ln -s /path/to/php/bin/php /usr/bin/php
Run Code Online (Sandbox Code Playgroud)

或以下也应该有效.

cp /path/to/php/bin/php /usr/bin/php
Run Code Online (Sandbox Code Playgroud)

如果您希望能够手动安装mods,还建议:

ln -s /path/to/php/bin/phpize /usr/bin/phpize
ln -s /path/to/php/bin/php-config /usr/bin/php-config
Run Code Online (Sandbox Code Playgroud)

这样,您的CLI将与您的Web服务器匹配.


doy*_*sto 10

我有同样的情景.我确实解决了以下问题:

1)在您的终端上输入

php --ini

这将输出您当前的php.ini配置文件路径.

2)使用vim或首选编辑器编辑php.ini.

vim /etc/php.ini

请注意/etc/php.ini是php.ini的路径文件.它可能在您的机器上有所不同.

3)find ; extension = php_pdo_mysql.dll并通过删除分号(;)取消注释

4)保存你的php.ini更改/ s

**5)重新启动Web服务器以应用更改

sudo systemctl重启apache2

**6)现在运行你的命令.

php工匠迁移

希望这对你有所帮助.


Jig*_*sar 6

在 linux 中这样做

首先像这样检查你的php版本:

php -v
Run Code Online (Sandbox Code Playgroud)

例如,在您获得版本号后,我获得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
Run Code Online (Sandbox Code Playgroud)

并且需要重启apache2

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)