50
<?php

try {
   $dbh = new PDO('pgsql:host=localhost;port=5432;dbname=###;user=###;password=##');
   echo "PDO connection object created";
}
catch(PDOException $e)
{
      echo $e->getMessage();
}

?>

我收到错误消息“无法加载驱动程序”

4

11 回答 11

82

您需要为 php 安装 pgsql 模块。在 debian/ubuntu 中是这样的:

sudo apt-get install php5-pgsql

或者如果安装了包,需要在 php.ini 中开启 de 模块

extension=php_pgsql.dll (windows)
extension=php_pgsql.so (linux)

伟大的。

于 2012-05-17T17:51:57.650 回答
63

尝试这个:

通过删除“;”取消注释 php.ini 中的以下内容

;extension=php_pgsql.dll

使用以下代码连接到 postgresql 数据库服务器:

pg_connect("host=localhost dbname=dbname user=username password=password")
    or die("Can't connect to database".pg_last_error());
于 2012-05-17T18:00:01.357 回答
9

对于 debian/ubuntu 安装

sudo apt-get install php-pgsql
于 2018-12-08T10:21:35.863 回答
7
  • 所以:Windows/Linux
  • HTTP 网络服务器:阿帕奇
  • 编程语言:PHP

使 PHP 在 Apache 中与 PostgreSQL 一起工作

在 Apache 中,我编辑以下配置文件:C:\xampp\php.ini

我确保未注释以下行:

extension=php_pgsql.dll 
extension=php_pdo_pgsql.dll

最后在尝试与数据库引擎建立新连接之前重新启动 Apache。


另外,我留下了确保连接唯一的代码:

private static $pdo = null;

public static function provideDataBaseInstance() {
    if (self::$pdo == null) {
        $dsn = "pgsql:host=" . HOST .
               ";port=5432;dbname=" . DATABASE .
               ";user=" . POSTGRESQL_USER .
               ";password=" . POSTGRESQL_PASSWORD;
        try {
            self::$pdo = new PDO($dsn);
        } catch (PDOException $exception) {
            $msg = $exception->getMessage();
            echo $msg . 
                 ". Do not forget to enable in the web server the database 
                  manager for php and in the database instance authorize the 
                  ip of the server instance if they not in the same 
                  instance.";
        }
    }
    return self::$pdo;
}

总帐

于 2018-12-07T01:07:20.963 回答
5

我必须在 httpd.conf 中添加这一行(Windows):

LoadFile "C:/Program Files (x86)/PostgreSQL/8.3/bin/libpq.dll"
于 2015-09-28T10:37:55.153 回答
3

我使用 Windows Platform Installer (WPΙ) 在 Windows IIS 上安装了 PHP。WPΙ 在“Internet 信息服务(IIS)管理器”控制台中创建了一个“PHP 管理器”工具。我正在使用这个工具配置 PHP。

http://php.net/manual/en/pdo.installation.php中说:

PDO 和所有主要驱动程序都将 PHP 作为共享扩展提供,只需编辑 php.ini 文件即可激活:extension=php_pdo.dll

所以我使用 PHP Manager 激活了扩展,现在 PDO 工作正常

PHP manager simple 在我的 php.ini 中添加了以下两行,您可以手动添加。当然,您必须重新启动 Web 服务器。

[PHP_PDO_PGSQL]
extension=php_pdo_pgsql.dll
于 2014-10-01T13:15:11.883 回答
3

只需安装数据库驱动程序:

apt-get install php5-pgsql php5-mysql php5-sqlite ...等等...

而且要快乐!

于 2014-08-18T19:39:36.053 回答
1

您需要安装 pdo_pgsql 包

于 2012-05-17T17:51:53.927 回答
1

我和许多其他人在这方面花了太长时间——这需要一个巨大的改进。花了几个小时后,我终于将 php_pgsql.dll 从 php 的 ext 目录复制到了 Apache24 的根目录(无论你安装它的位置),最后 Apache 能够加载 php/pg 模块和 dll。

于 2015-12-19T20:43:48.230 回答
1
$dbh = new PDO('pgsql:host=localhost;port=5432;dbname=###;user=###;password=##');

对于 PDO 类型连接取消注释

extension=php_pdo_pgsql.dll并评论

;extension=php_pgsql.dll

$dbh = pg_connect("host=localhost dbname=### user=### password=####");

对于 pgconnect 类型的连接注释

;extension=php_pdo_pgsql.dll并取消注释

extension=php_pgsql.dll

两个连接都应该工作。

于 2020-10-14T08:21:40.967 回答
0

在我的情况下,有2 个 php.ini,我不得不在两个 php.ini 中取消注释扩展 pdo_pgsql

  1. php文件夹中
  2. apache文件夹中

都在wamp文件夹中

于 2020-03-26T11:39:28.413 回答