如何使 php 与 postgresql 一起使用?

How do I enable php to work with postgresql?

提问人:Aaron 提问时间:5/18/2012 最后编辑:laurentAaron 更新时间:6/23/2022 访问量:295092

问:

<?php

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

?>

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

PHP Windows PostgreSQL PDO

评论

0赞 AndrewPK 5/18/2012
stackoverflow.com/a/7240866/705198在 debian linux 衍生产品上介绍这个问题。
0赞 miken32 12/7/2018
Install pdo for postgres Ubuntu 的可能重复项

答:

1赞 rinat.io 5/18/2012 #1

您需要不安装pdo_pgsql包

评论

3赞 Aaron 5/18/2012
如何在 Windows 上安装该软件包?
2赞 rinat.io 5/18/2012
或。不确定pecl install pdo_pgsql
91赞 Jorge Olivares 5/18/2012 #2

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

sudo apt-get install php5-pgsql

或者如果包已安装,则需要在 php.ini 中启用 de 模块

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

伟大。

评论

0赞 Aaron 5/18/2012
嗨,你知道我如何在 Windows 中安装它吗?对不起,我还没有ubuntu..
0赞 Jorge Olivares 5/18/2012
取决于。你用的是棉絮或类似的东西吗?
1赞 Jorge Olivares 5/18/2012
尝试先启用模块,编辑php.ini并搜索php_pgsql并删除;在行的开头。然后,您需要重新加载服务。
2赞 wmfrancia 3/8/2017
只是对 php7 的这个旧线程的更新,命令是:sudo apt install php7.0-pgsql
0赞 Floggedhorse 3/10/2019
运行 php 7.0 - 我必须将“extension=pgsql.so”添加到“php.ini” = “open database successfully” = :)
64赞 Sachin Puri 5/18/2012 #3

试试这个:

通过删除 “;” 取消在 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());

评论

0赞 IIllIIll 5/7/2015
我仍然看到,尽管我知道我已经取消了评论。想法?PHP Fatal error: Call to undefined function pg_connect()
3赞 augustowebd 8/19/2014 #4

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

apt-get 安装 php5-pgsql php5-mysql php5-sqlite ...等等......

并快乐!

评论

1赞 Maks3w 8/19/2014
并在安装新扩展后重新加载PHP配置(重新加载apache / nginx等)
3赞 Panagiotis Piperopoulos 10/1/2014 #5

我使用 Windows 平台安装程序 (WPΙ) 在 Windows IIS 上安装了 PHP。WPΙ 在“Internet Information Services (IIS) Manager”控制台中创建“PHP 管理器”工具。我正在使用此工具配置 PHP。

in http://php.net/manual/en/pdo.installation.php 说道:

PDO和所有主要驱动程序都作为共享扩展随PHP一起提供,只需通过编辑php.ini文件来激活: 分机=php_pdo.dll

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

PHP管理器在我的php.ini中简单地添加了以下两行,您可以手动添加这些行。当然,您必须重新启动 Web 服务器。

[PHP_PDO_PGSQL]
extension=php_pdo_pgsql.dll

评论

0赞 Matthew Lock 9/24/2017
我确实通过WPI安装了PHP,在[ExtensionList]部分的末尾将extension=php_pgsql.dll添加到C:\Program Files\PHP\v7.1\php.ini就足够了
6赞 Wojciech Legierski 9/28/2015 #6

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

LoadFile "C:/Program Files (x86)/PostgreSQL/8.3/bin/libpq.dll"

评论

1赞 Daniel L. VanDenBosch 3/1/2018
在哪里可以找到 httpd.conf
0赞 Rishu Ranjan 6/17/2021
在 Apache 服务器的配置文件中。如果您使用的是 mamp,则 C:\MAMP\bin\apache\conf\httpd.conf
1赞 user5699115 12/20/2015 #7

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

评论

0赞 Daniel L. VanDenBosch 3/1/2018
太棒了,谢谢,如果我使用 xammp,我会把它放在 C:\xampp 文件夹中吗?
8赞 Braian Coronel 12/7/2018 #8
  • SO:Windows/Linux
  • HTTP Web 服务器:Apache
  • 编程语言: 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;
}

GL系列

15赞 Nathan B 12/8/2018 #9

对于 debian/ubuntu 安装

sudo apt-get install php-pgsql
0赞 rtfmpliz 3/26/2020 #10

就我而言,有 2 个 php.ini,我不得不取消注释两个 php 中的扩展名pdo_pgsql.ini

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

两者都在 wamp 文件夹中

1赞 kavya 10/14/2020 #11
$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

两个连接都应该可以正常工作。

0赞 Youzef 4/29/2022 #12

因为有些答案似乎已经过时了,所以如果您正在使用 xampp,请转到 xampp 安装中的文件夹。在其中打开文件并取消注释phpphp.ini

extension=pdo_pgsql
extension=pdo_sqlite

删除这些行之前的。;

0赞 Lord Fers 6/22/2022 #13

如果您在 Windows 上使用 AppServ,则:

使 PHP 能够在 Apache 中使用 PostgreSQL

  1. 转到。C:\AppServ\php7\php.ini
  2. 取消注释此行:删除 .;extension=pgsql;