【发布时间】:2011-09-15 22:15:59
【问题描述】:
我正在尝试连接到安装了 PostgreSQL 的数据库(远程服务器)。我的 PHP 代码正在尝试使用 pg_connect() 连接到数据库,但我收到错误消息:-“致命错误:在第 82 行的 /var/www/website/functions.php 中调用未定义的函数 pg_connect()”。
第 82 行就是:
$db = pg_connect($conn_string);
where $conn_string = "host=".$hostname." port=5432 dbname=".$dbname." user=".$db_user." password=".$db_password.""
(之前定义的所有变量)
我检查了许多论坛,建议的唯一解决方案是找到包含一行的 php.ini 文件:- extension = pgsql.so(对于 UNIX)和 extension = php_pgsql.dll(对于 Windows)。
该语句应该被注释,解决方案是取消注释。我已经尝试过了,但仍然没有改变这种情况。远程服务器安装的版本高于 PostgreSQL v9.0.4。 然后我将 PostgreSQL v8.4.8 安装到我的笔记本电脑上,并使用 MAMP 在本地运行网站。起初,Apache 出于某种奇怪的原因崩溃了,我解决了这个问题,但我再次遇到了与以前相同的错误,即致命错误:调用未定义函数 pg_connect()....
我也跑了phpinfo(),显示php版本确实支持PostgreSQL模块。我花了一整天的时间寻找解决方案,但没有成功。这是我第一个开发网站的项目,我很无知。任何形式的帮助将不胜感激。
phpinfo() 在终端上给了我一个巨大的列表,但与 PostgreSQL 相关的列表如下:-
pdo_pgsql
PDO Driver for PostgreSQL => enabled
PostgreSQL(libpq) Version => 9.0.4
Module version => 1.0.2
Revision => $Id: pdo_pgsql.c 306939 2011-01-01 02:19:59Z felipe $
pgsql
PostgreSQL Support => enabled
PostgreSQL(libpq) Version => 9.0.4
Multibyte character support => enabled
SSL support => enabled
Active Persistent Links => 0
Active Links => 0
Directive => Local Value => Master Value
pgsql.allow_persistent => On => On
pgsql.auto_reset_persistent => Off => Off
pgsql.ignore_notice => Off => Off
pgsql.log_notice => Off => Off
pgsql.max_links => Unlimited => Unlimited
pgsql.max_persistent => Unlimited => Unlimited
我在每次编辑后都重新启动了 MAMP,因为到目前为止我读过的每篇文章都提到了它。我相信这会重置 Apache 和 php。
'pqsql.so'(在 UNIX 中相当于 Windows 中的 'php_pqsql.dll')存在于 'extension' 目录中。我还将“pqsql.so”文件复制粘贴到 Apache/bin 目录,但它没有给我任何更改。
我主要不是在命令行中运行 php。我只是想知道 phpinfo() 会给我什么与我在上面的回复中提到的 pgsql 相关的内容。
我仍在研究您提到的工具,并会在得到任何结果后立即回复。
谢谢, H
【问题讨论】:
-
关于 PostreSQL,
phpinfo()到底显示了什么?您是否在两者之间重新启动了网络服务器? -
+1 用于运行 phpinfo()。这无疑会表明 pgsql 扩展没有加载。您可能必须在 php.ini 中指定扩展的完整路径,然后重新启动 apache。
标签: php apache postgresql