我已经安装了支持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连接。对此有任何意见都会有所帮助。
答案 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
以下是我的代码,可能会有人受益:
<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。我查看了依赖项,我相信我要么根本没有安装它们,要么没有正确安装它们。
我在这个舞台上不再需要帮助,因为我有一个工作设置并且至少知道一种达到这一点的方法。