如何使 php 与 postgresql 一起工作?

Posted

技术标签:

【中文标题】如何使 php 与 postgresql 一起工作?【英文标题】:How do I enable php to work with postgresql? 【发布时间】:2012-05-25 07:56:35 【问题描述】:
<?php

try 
   $dbh = new PDO('pgsql:host=localhost;port=5432;dbname=###;user=###;password=##');
   echo "PDO connection object created";

catch(PDOException $e)

      echo $e->getMessage();


?>

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

【问题讨论】:

***.com/a/7240866/705198 涵盖了有关 debian linux 衍生产品的问题。 Install pdo for postgres Ubuntu的可能重复 【参考方案1】:

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

sudo apt-get install php5-pgsql

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

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

伟大的。

【讨论】:

您好,您知道如何在 Windows 中安装它吗?对不起,我还没有 ubuntu.. 视情况而定。您正在使用 wamp 或类似的东西? 尝试先启用该模块,编辑php.ini并搜索php_pgsql并删除;在行的开头。然后你需要重新加载你的服务。 只是对 php7 这个旧线程的更新,命令是:sudo apt install php7.0-pgsql 正在运行 php 7.0 - 我必须将 "extension=pgsql.so" 添加到 "php.ini" = "打开数据库成功" = :)【参考方案2】:

试试这个:

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

【讨论】:

我仍然看到PHP Fatal error: Call to undefined function pg_connect(),虽然我知道我没有评论它。想法?【参考方案3】:

debian/ubuntu 安装

sudo apt-get install php-pgsql

【讨论】:

【参考方案4】: 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

【讨论】:

【参考方案5】:

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

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

【讨论】:

哪里可以找到httpd.conf Apache 服务器的内部配置文件。如果您使用 mamp,则 C:\MAMP\bin\apache\conf\httpd.conf【参考方案6】:

只需安装数据库驱动:

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

要快乐!

【讨论】:

安装新扩展后重新加载 PHP 配置(重新加载 apache/nginx 等)【参考方案7】:

我使用 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 管理器激活了扩展,现在 PDO 工作正常

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

[PHP_PDO_PGSQL]
extension=php_pdo_pgsql.dll

【讨论】:

我确实通过 WPI 安装了 PHP,我只需在 [ 末尾添加 extension=php_pgsql.dll 到 C:\Program Files\PHP\v7.1\php.ini ExtensionList] 部分【参考方案8】:

你需要安装 pdo_pgsql 包

【讨论】:

如何在 Windows 上安装该软件包? 也许是pecl install pdo_pgsql。不确定【参考方案9】:

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

【讨论】:

非常感谢,如果我使用的是 xammp,我会把它放在 C:\xampp 文件夹中吗?【参考方案10】:
$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

两个连接都应该工作。

【讨论】:

【参考方案11】:

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

    php 文件夹中 在 apache 文件夹中

都在 wamp 文件夹中

【讨论】:

以上是关于如何使 php 与 postgresql 一起工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 SQL Server 2012 与 php 一起工作?

如何使 windows 符号链接与 mod_php 一起工作?

如何使更漂亮的(php)与 VS Code 一起工作

如何使 xdebug 与 Zend Studio 一起工作

将 Gmail API 与 PHP 一起使用:如何使 CLI 应用程序在浏览器中运行?

将 PDO 与 PostgreSQL 一起使用时如何忽略问号作为占位符