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

时间:2016-10-12 07:51:18

标签: php postgresql laravel pdo driver

我看过很多关于这个错误的话题,但我认为我的案例是具体的。 事情就是这样:

我最初在我的Ubuntu服务器上安装了PHP 5.5.9。为了安装最新的Laravel Framework,我必须将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驱动程序,并在php.ini中取消注释了extension=pdo_mysql.so,并且在我的网页上连接到数据库工作正常。

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

有什么方法可以解决这个问题吗?我认为这是因为版本冲突。

1 个答案:

答案 0 :(得分:0)

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

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

在我的系统(Ubuntu 16.04)上,有子目录import { NgModule, Provider } from '@angular/core'; import { APP_BASE_HREF, Location } from '@angular/common'; const baseHref: Provider = { provide: APP_BASE_HREF, useValue: window['_app_base'] || '/' }; /etc/php/7.0/cli/conf.d,它们都包含/etc/php/7.0/apache2/conf.d

  

php mysql模块的配置
  ;优先级= 20
  extension = pdo_mysql.so

因此,您可以而且必须为Web服务器和/或cli以及每个版本单独配置Postgres和PDO。