Laravel:错误 [PDOException]:找不到驱动程序 (PostgreSQL)
Laravel: Error [PDOException]: Could not Find Driver (PostgreSQL)
我看过很多关于这个错误的话题,但我认为我的情况很具体。
事情是这样的:
我最初在 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,并且能够在我的网页上连接到我的数据库(我可以显示我的 table 中的字段)。但是当我尝试在控制台中执行 php artisan migrate
时,出现以下错误:
[PDOException]
could not find driver
这很奇怪,因为我之前在 PHP 5.5.9 上安装了 PDO pgsql 驱动程序,并在 php.ini 中取消注释 extension=pdo_mysql.so
并且与 DB 的连接在我的网页上工作正常。
我认为问题是我的服务器上有两个不同的 PHP 版本:我的 /etc
文件夹中有文件夹 php5
和 php/5.6
,它们有不同的配置。我试图删除并安装 php5-pgsql
包,但它似乎安装在以前的 PHP 版本上。我的 /usr/lib
文件夹中也有两个不同的文件夹。命令 php -i | grep -i pdo
未在控制台中显示已安装的 PDO pgsql 驱动程序。
有什么办法可以解决这个问题吗?我认为发生这种情况是因为如果版本冲突。
不仅有包php/php5,还有包libapache2-mod-php。除非您将 PHP 与 mod_cgi 一起使用,否则您还需要更新软件包 libapache2-mod-php,以便在您的网站中拥有适当的 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
因此您可以而且必须为网络服务器 and/or cli 和每个版本分别配置 Postgres 和 PDO。
我看过很多关于这个错误的话题,但我认为我的情况很具体。 事情是这样的:
我最初在 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,并且能够在我的网页上连接到我的数据库(我可以显示我的 table 中的字段)。但是当我尝试在控制台中执行 php artisan migrate
时,出现以下错误:
[PDOException]
could not find driver
这很奇怪,因为我之前在 PHP 5.5.9 上安装了 PDO pgsql 驱动程序,并在 php.ini 中取消注释 extension=pdo_mysql.so
并且与 DB 的连接在我的网页上工作正常。
我认为问题是我的服务器上有两个不同的 PHP 版本:我的 /etc
文件夹中有文件夹 php5
和 php/5.6
,它们有不同的配置。我试图删除并安装 php5-pgsql
包,但它似乎安装在以前的 PHP 版本上。我的 /usr/lib
文件夹中也有两个不同的文件夹。命令 php -i | grep -i pdo
未在控制台中显示已安装的 PDO pgsql 驱动程序。
有什么办法可以解决这个问题吗?我认为发生这种情况是因为如果版本冲突。
不仅有包php/php5,还有包libapache2-mod-php。除非您将 PHP 与 mod_cgi 一起使用,否则您还需要更新软件包 libapache2-mod-php,以便在您的网站中拥有适当的 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
因此您可以而且必须为网络服务器 and/or cli 和每个版本分别配置 Postgres 和 PDO。