36

pdo 在 mysql 上运行良好,但在 pgsql 上它给出的错误'PDOException' with message 'could not find driver'我已经安装了php5-pgsql包,其中还包括pdo_pgsql

http://packages.debian.org/sid/php5-pgsql

这个包提供了一个直接从 PHP 脚本连接 PostgreSQL 数据库的模块。它还包括用于 PHP 数据对象扩展的 pdo_pgsql 模块。

我的 dsn 是pgsql:dbname=DB;host=192.168.0.2 我使用的是 Ubuntu 10.04

4

10 回答 10

46

此消息表示您需要在 PHP 中安装激活postgresql 扩展

这个解决方案对我有用: 安装 postgresql扩展

[sudo] apt-get install php-pgsql

之后,为了激活它,在文件中取消注释pgsqlpdo-pgsql扩展etc/php/$PHP_VERSION/apache2/php.ini

在此处输入图像描述

最后,输入:

[sudo] /etc/init.d/apache2 restart

如果您使用 apache,例如我的情况,要重新启动 apache 服务器...

于 2018-02-19T01:40:07.287 回答
22

1) 你是否在php.ini( extension=pgsql.so) 中启用了 pgsql.so?

2)你是 Postgresql 在192.168.0.2接口上监听吗?(您可以通过 来查看netstat -tpln

3)您如何验证您对 Postgresql 的访问权限?

于 2012-04-10T08:06:36.133 回答
8

确保取消注释告诉 php Postgres 驱动程序extension=pgsql.so在主php.ini文件中的位置(通常)的行。

于 2012-04-10T07:59:57.940 回答
4

我遇到过同样的问题。首先 - 检查它是否在 php.ini 中启用。取消注释extension=php_pdo_pgsql...

比设置扩展目录!!

extension_dir = "ext" ; for your case it could be other dir.

并且不要忘记在更改配置后重新启动服务器。

于 2016-02-26T10:26:12.417 回答
4

尝试去掉前面的分号

扩展=pgsql
扩展=pgsql.so

包含在您的php.ini文件中

您可以从 XAMPP 控制面板执行此操作。

在此处输入图像描述

于 2018-12-12T20:40:50.113 回答
3

我在另一个解决方案中遇到了同样的问题。我花了大约 4 个小时来解决这个问题。请检查以下内容以解决此问题。

  1. 检查php.ini文件并从此行中删除分号

    extension=pgsql

    extension=pdo_pgsql

  2. 重启你的 apache2 服务器

    sudo service apache2 restart

  3. 检查您的 PDO 驱动程序是否已在 localhost 中更新phpinfo()

在此处输入图像描述

我做对了所有事情,但我仍然遇到这个问题。你知道为什么吗?因为我安装了几个版本的php。所以我php7.4在我的 php cli 中运行,但 localhost 在php7.2. 所以总是检查你的 php 版本。

  1. 在 localhost 和终端 cli 上检查您的 php 版本

在此处输入图像描述

于 2020-09-21T13:30:18.563 回答
1

这是我为解决问题所做的。

  1. 编辑并从中php.ini删除。另外,添加到文件中。;extension=pdo_pgsqlextension=pgsql.sophp.ini

  2. 确保在尝试查看结果之前重新启动 Apache 服务器。

于 2018-06-04T19:12:32.170 回答
0

当您没有在 Apache 和 PHP 的同一台机器上安装 postgresql 时;您必须安装php-pgsql并且不必在 Linux中php.ini手动添加扩展(在 Windows 中是),因为会生成冗余并且这不起作用(签入error.log)。

$ sudo apt install php-pgsql

然后您可以检查是否存在自动启用的扩展:

$ sudo nano /etc/php/7.0/apache2/conf.d/10-pdo.ini

观察:在phpinfo()您将找到目录conf.d/和文件error.log

总帐

于 2018-12-19T04:21:17.577 回答
0

只需运行 php --ini 并在输出中查找 Loaded Configuration File 以获取 CLI 使用的 php.ini 的位置

然后检查您是否正确启用了扩展。

于 2021-03-16T03:51:51.003 回答
-3

将 libpq.dll 从 PHP 目录复制到 Apache24\bin(或您的安装位置)。

于 2016-06-07T14:10:02.957 回答