PostgreSql'PDOException',消息'找不到驱动程序'

时间:2012-04-10 07:49:29

标签: php postgresql ubuntu pdo

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

10 个答案:

答案 0 :(得分:18)

1)您是否在php.iniextension=pgsql.so)中启用了pgsql.so?

2)你在192.168.0.2界面上看Postgresql吗? (您可以通过netstat -tpln

进行检查

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

答案 1 :(得分:7)

此解决方案适合我: 刚

[sudo] apt-get install php-pgsql

之后,取消注释pgsql

中的pdo-pgsqlphp.ini次扩展

最后:

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

如果你使用像我这样的apache ......

答案 2 :(得分:6)

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

答案 3 :(得分:4)

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

设置扩展目录!!

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

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

答案 4 :(得分:0)

以下是我为解决问题所做的工作。

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

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

答案 5 :(得分:0)

尝试删除

前面的分号
  

extension = pgsql
  extension = pgsql.so

包含在您的 php.ini 文件中

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

enter image description here

答案 6 :(得分:0)

当您没有在与Apache和PHP相同的机器上安装postgresql时;您必须在Linux(in Windows yes)的php-pgsql中手动安装php.ini,并且不必添加扩展,因为会产生冗余并且这不起作用(在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

答案 7 :(得分:0)

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

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

    extension=pgsql

    extension=pdo_pgsql

  2. 重新启动apache2服务器

    sudo service apache2 restart

  3. 检查您的PDO驱动程序是否已在本地主机phpinfo()

    中更新

enter image description here

我做对了所有事情,但仍然有这个问题。你知道为什么吗?因为我安装了多个版本的php。因此,我在php cli中运行php7.4,但是localhost在php7.2上运行。因此,请务必检查您的php版本。

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

enter image description here

答案 8 :(得分:0)

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

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

答案 9 :(得分:-3)

将libpq.dll从PHP目录复制到Apache24 \ bin (或安装的任何地方)。