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

时间:2017-03-20 16:49:51

标签: php mysql laravel pdo laravel-5

我在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 =密码

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

启用扩展解决方案:

PDO is enabled

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,

11 个答案:

答案 0 :(得分:37)

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

尝试运行下面的命令

sudo apt install php7.0-mysql

答案 1 :(得分:18)

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

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

enter image description here

enter image description here

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

答案 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