PostgreSql“PDOException”,消息“无法找到驱动程序”

问题描述 投票:0回答:11

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

php postgresql ubuntu pdo
11个回答
59
投票

此消息意味着您需要 install 和/或 activate PHP 中的 postgresql 扩展

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

[sudo] apt-get install php-pgsql

之后,要激活它,请取消注释

pgsql
文件中的
pdo-pgsql
etc/php/$PHP_VERSION/apache2/php.ini
扩展名

最后,输入:

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

如果您使用 apache(就像我的情况一样),请重新启动 apache 服务器...


22
投票

1) 您是否在

php.ini
(
extension=pgsql.so
) 中启用了 pgsql.so?

2) 你的 Postgresql 是否在

192.168.0.2
接口上监听? (可以通过
netstat -tpln
查看)

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


9
投票

确保您已取消注释主

extension=pgsql.so
文件中告诉 php Postgres 驱动程序所在位置(通常是
php.ini
)的行。


4
投票

我也有同样的问题。首先 - 检查它是否在 php.ini 中启用。取消评论

extension=php_pdo_pgsql...

比设置扩展目录!!

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

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


4
投票

尝试去掉

前面的分号

扩展名=pgsql
扩展名=pgsql.so

包含在您的php.ini文件中

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


3
投票

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

  1. 编辑

    php.ini
    并从
    ;
    中删除
    extension=pdo_pgsql
    。另外,将
    extension=pgsql.so
    添加到
    php.ini
    文件中。

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


3
投票

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

  1. 检查

    php.ini
    文件并删除此行中的分号

    extension=pgsql

    extension=pdo_pgsql

  2. 重新启动你的apache2服务器

    sudo service apache2 restart

  3. 检查本地主机中的 PDO 驱动程序是否已更新

    phpinfo()

我做了所有正确的事情,但仍然遇到这个问题。你知道为什么吗?因为我安装了几个版本的php。所以我在我的 php cli 中运行

php7.4
,但本地主机在
php7.2
上运行。所以一定要检查你的 php 版本。

  1. 检查本地主机和终端 cli 上的 php 版本


1
投票

当你没有在 Apache 和 PHP 同一台机器上安装 postgresql 时;您必须在 Linux 中手动安装

php-pgsql
并且 不必在 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

GL


1
投票

只需运行 php --ini 并在输出中查找加载的配置文件以获取 CLI 使用的 php.ini 的位置

然后检查您是否已正确启用扩展程序。


0
投票

使用 Amazon ec2 linux 2(红帽?); Apache 的 PHP 找不到驱动程序,但它在命令行上(psql) 在花费了大量时间检查配置文件后,出于绝望,我重新启动了 ec2 服务器实例,问题就解决了(就像 Windows 一样:),正如 Dogbert 技术支持曾经说过的“闭嘴并重新启动”


-4
投票

将 libpq.dll 从 PHP 目录复制到 Apache24 in(或任何安装位置)。

© www.soinside.com 2019 - 2024. All rights reserved.