php - Laravel: 错误 [PDOException]: 找不到驱动程序 (PostgreSQL)

标签 php postgresql laravel pdo driver

我已经看到很多关于这个错误的话题,但我认为我的情况是特定的。 事情是这样的:

我最初在我的 Ubuntu 服务器上安装了 PHP 5.5.9。为了安装最新的 Laravel 框架,我不得不将我的 PHP 升级到 5.6。我用了this guide更新。我也有 PostgreSQL 9.3。现在,phpinfo告诉我我仍然安装了 PHP 5.5.9。然而,php -v告诉我我有 PHP 5.6。我已经成功安装了 Laravel,并且能够在我的网页上连接到我的数据库(我可以显示表格中的字段)。但是当我尝试执行 php artisan migrate 时在控制台中,我收到以下错误:

[PDOException]
could not find driver

这很奇怪,因为我之前在 PHP 5.5.9 上安装了 PDO pgsql 驱动程序并且取消了注释 extension=pdo_mysql.so在 php.ini 中,与 DB 的连接在我的网页上工作正常。

我认为问题是我的服务器上有两个不同的 PHP 版本:我有文件夹 php5php/5.6在我的 /etc文件夹,它们具有不同的配置。我尝试删除并安装 php5-pgsql包,但它似乎安装在以前的 PHP 版本上。我的 /usr/lib 中也有两个不同的文件夹文件夹。命令 php -i | grep -i pdo不在控制台中显示已安装的 PDO pgsql 驱动程序。

有什么办法可以解决这个问题吗?我认为发生这种情况是因为如果版本冲突。

最佳答案

不仅有php/php5包,还有libapache2-mod-php包。除非您将 PHP 与 mod_cgi 一起使用,否则您还需要更新软件包 libapache2-mod-php,以便在您的 Web 服务器中拥有合适的 PHP 版本。

正如您已经注意到的,有几个 PHP 配置目录和文件。如果你想在 5.6 版本中也使用 Postgres 和 PDO,你必须在两个配置文件中启用它。


在我的系统(Ubuntu 16.04)上,有子目录/etc/php/7.0/cli/conf.d/etc/php/7.0/apache2/conf.d,它们都包含 20-pdo_mysql.ini

; configuration for php mysql module
; priority=20
extension=pdo_mysql.so

因此您可以而且必须为网络服务器和/或 cli 以及每个版本分别配置 Postgres 和 PDO。

关于php - Laravel: 错误 [PDOException]: 找不到驱动程序 (PostgreSQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39993289/

相关文章:

php - 预填充 wp-login.php 用户名

ruby-on-rails - 在 Rails 中查找具有多个外键值的记录

postgresql - 使用原则 2 DQL 强制转换 bool 类型

sql - 插入 postgresQL

php - Laravel 一对多关系查询

php - 改写sql查询

php - 如何在 HTML 中的 PHP 中同时注释掉 HTML 和 PHP?

php - 如何在不使用多个查询字符串刷新的情况下加载内容

php - 如何在 Laravel 8 中的搜索框中过滤 bool 值

php - 遍历具有重复记录的 PHP 数组并删除值 = 0 的一条记录