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

新手上路,请多包涵

我的 Ubuntu 14.04(带有 Plesk 12.5.30 的 VPS)上有一个 Laravel 5.4 项目。创建数据库并使用所需信息设置 .env 文件后,我运行了 php artisan migrate 并引发了异常:

[照亮\数据库\查询异常]

找不到驱动程序 (SQL: select * from information_schema.tables where table_schema = pmaramaldb and table_name = migrations)

[PDO异常]

找不到驱动程序

我的 .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 árbol de dependencias

Leyendo la informationación de estado… Hecho

php7.0-mysql 已经是最新版本了。

0actualizados, 0 se instalará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 árbol de dependencias

Leyendo la informationación de estado… Hecho

php5-sqlite 已经是最新版本。

0actualizados, 0 se instalarán, 0 para eliminar y 67 no actualizados。

Composer Dump-autoload 解决方案:

它也没有用。我试过 composer dump-autoload 但没有用。

运行命令后 php -i

PDO

PDO 支持 => 启用

PDO 驱动程序 =>

PHP 版本 => 5.6.30-1+deb.sury.org~trusty+1

好吧,我不确定这是否与错误有关,但运行 php -v 显示的版本是:

用户@服务器:~/path$ php -v

PHP 5.6.30-1+deb.sury.org~trusty+1 (cli)

版权所有 © 1997-2016 PHP 集团

Zend Engine v2.6.0,版权所有 © 1998-2016 Zend Technologies

Zend OPcache v7.0.6-dev,版权所有 © 1999-2016,Zend Technologies

原文由 Maramal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 597
2 个回答

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

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

 ln -s /path/to/php/bin/phpize /usr/bin/phpize
ln -s /path/to/php/bin/php-config /usr/bin/php-config

这样您的 CLI 将匹配您的网络服务器。

更新:

如果如 this answer 中所述,如果您使用 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>

原文由 apokryfos 发布,翻译遵循 CC BY-SA 4.0 许可协议

sudo apt install php7.2-pdo php7.2-mysql

原文由 anoja madusanka 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题