在Ubuntu 11.04服务器中为postgresql启用PHP支持

时间:2011-10-03 21:44:09

标签: php postgresql apache2 ubuntu-11.04

我已经安装了支持php5的Apache2,一切都在那里工作。我已经安装了PostgreSQL,并且能够使用终端连接到它并执行SQL语句。

问题:我的php脚本和PostgreSQL数据库之间无法建立连接。我已经安装了从存储库打包的php5-pgsql,但连接不起作用。

我收到以下错误消息:

PHP致命错误:在[X]

上的/var/www/ [myfile] .php中调用未定义的函数pg_connect()

如何在ubuntu 11.04中启用PHP5中对PostgreSQL连接的支持?

编辑:检查了phpinfo(),发现没有PostgreSQL的条目。我不知道为什么会这样,我DID为ubuntu 11.04安装php5-pgsql包。

这是有效的:我从Ubuntu存储库安装了phppgadmin。这不仅为我提供了一个很好的工具,它还安装了php所需的软件包以连接到postgresql。

之后,它全部在连接参数中。在我在pg_connect()中按顺序定义连接主机,端口,数据库,用户和密码之前,它不会连接到本地服务器上的数据库。

我仍然不知道为什么我自己安装php5-pgsql没有从php启用PostgreSQL连接。对此有任何意见都会有所帮助。

3 个答案:

答案 0 :(得分:49)

Install the php5-pgsql package solves the problem。 (取决于版本... php4-pgsql for php4)

apt-get install php5-pgsql

请记住重启Apache。

/etc/init.d/apache2 restart

- 请注意,如果您不管理服务器可能会很难。

答案 1 :(得分:4)

目前,我使用的是Ubuntu 16.04 LTS。 在使用Php获取Postgress数据库值时,我也遇到了同样的问题,所以我使用以下命令解决了这个问题。

我的PHP版本是7.0,所以我尝试了下面的命令。

apt-get install php-pgsql

请记住重启Apache

/etc/init.d/apache2 restart

以下是我的代码,可能会有人受益:

- testdb.php

<html> 
    <body> 
        <table border="0" cellspacing="0" cellpadding="0"> 
            <tr> 
                <td> 
                    Friend ID 
                </td> 
                <td> 
                     Name 
                </td> 

            </tr> 
        <?php 
        $db = pg_connect('host=localhost dbname=postgres user=postgres password=root port=5432'); 

        $query = "SELECT * FROM account"; //account is name of table 

        $result = pg_query($query); 
        if (!$result) { 
            echo "Problem with query " . $query . "<br/>"; 
            echo pg_last_error(); 
            exit(); 
        } 

        while($myrow = pg_fetch_assoc($result)) { 
            printf ("<tr><td>%s</td><td>%s</td></tr>", $myrow['id'], htmlspecialchars($myrow['name']));
        } 
        ?> 
        </table> 
    </body> 
</html> 

答案 2 :(得分:0)

我能得出的唯一结论是,phppgadmin安装了所有需要的软件包,以使PHP5连接到PostgreSQL。我查看了依赖项,我相信我要么根本没有安装它们,要么没有正确安装它们。

我在这个舞台上不再需要帮助,因为我有一个工作设置并且至少知道一种达到这一点的方法。