如何使php与postgresql协同工作?

如何使php与postgresql协同工作?,php,windows,postgresql,pdo,Php,Windows,Postgresql,Pdo,我收到错误消息“无法加载驱动程序”您需要安装用于php的pgsql模块。 在debian/ubuntu中是这样的: <?php try { $dbh = new PDO('pgsql:host=localhost;port=5432;dbname=###;user=###;password=##'); echo "PDO connection object created"; } catch(PDOException $e) { echo $e->getMe

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

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

<?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.ini中启用de模块

sudo apt-get install php5-pgsql
Greatings.

试试这个:

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

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

;extension=php_pgsql.dll

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

apt get install php5 pgsql php5 mysql php5 sqlite。。。等等


祝你快乐

我使用windows平台安装程序(WPⅧ)在windows IIS上安装了PHP。WPⅧ在“Internet信息服务(IIS)管理器”控制台中创建“PHP管理器”工具。我正在使用这个工具配置PHP

他说:

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

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

PHP manager simple在my PHP.ini中添加了以下两行,您可以手动添加这些行。当然,您必须重新启动web服务器


[PHP_PDO_PGSQL]
extension=PHP_PDO_PGSQL.dll

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


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

  • 所以:Windows/Linux
  • HTTP Web服务器:Apache
  • 编程语言:PHP
允许PHP在Apache中使用PostgreSQL 在Apache中,我编辑以下配置文件:
C:\xampp\php.ini

我确保以下行未注释:

LoadFile "C:/Program Files (x86)/PostgreSQL/8.3/bin/libpq.dll"
在尝试与数据库引擎建立新连接之前,最后重新启动Apache。


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

extension=php_pgsql.dll 
extension=php_pdo_pgsql.dll

GL

用于debian/ubuntu安装

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;
}

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

  • php文件夹中
  • 在apache文件夹中
  • 都在wamp文件夹中

    sudo apt-get install php-pgsql
    
    对于PDO类型连接取消注释

    extension=php_pdo_pgsql.dll
    并用

    ;extension=php_pgsql.dll

    $dbh = new PDO('pgsql:host=localhost;port=5432;dbname=###;user=###;password=##');
    
    对于pgconnect类型连接注释

    ;extension=php_pdo_pgsql.dll
    并取消注释

    extension=php\u pgsql.dll

    $dbh = new PDO('pgsql:host=localhost;port=5432;dbname=###;user=###;password=##');
    

    这两个连接都应该工作。

    您好,您知道我将如何在windows中安装它吗?对不起,我还没有ubuntu,这要看情况而定。您正在使用wamp或类似的东西吗?首先尝试启用模块,编辑php.ini并搜索php_pgsql并删除;在队伍的开始。然后你需要重新加载你的服务。只需更新php7的这个旧线程,命令是:sudo apt install php7.0-pgsqlRunning php7.0-我必须将“extension=pgsql.so”添加到“php.ini”=“open database successfully”=:)我如何在windows上安装该软件包?也许
    pecl install pdo_pgsql
    。不确定debian linux衍生产品是否涉及此问题。安装新扩展后,可能会重复并重新加载PHP配置(重新加载apache/nginx等)。我仍然看到
    PHP致命错误:调用未定义的函数pg_connect()
    ,尽管我知道我已经取消了注释。想法?我确实是通过WPI安装了PHP,我在[ExtensionList]部分的末尾将extension=PHP\u pgsql.dll添加到C:\Program Files\PHP\v7.1\PHP.ini中就足够了,在那里可以找到httpd.dll。谢谢,如果我使用xammp,我会把它放在C:\xampp文件夹中吗?
    $dbh = new PDO('pgsql:host=localhost;port=5432;dbname=###;user=###;password=##');
    
    $dbh = pg_connect("host=localhost dbname=### user=### password=####");