致命错误:调用未定义的函数pg_connect

时间:2013-02-13 08:07:47

标签: php windows wamp

我使用的是Windows 7,php 5.3.5和WAMP服务器。我有两个php文件:trigger.php和background.php 我想将background.php作为后台进程运行。我必须从trigger.php调用此文件。为实现这一点,我使用了以下方法。 我在trigger.php中包含了以下代码,以使background.php在后台进行处理。

$handle = popen('start /b C:\wamp\bin\php\php5.3.5\php.exe     C:\wamp\www\email3.php','r');
在background.php中的

我有以下代码连接到数据库。

$conn_string = "host=localhost port=5432 dbname=tagbase user=postgres password=postgres";  

现在,在解析此行时出现以下错误:

  

致命错误:在第3行的C:\ wamp \ www \ background.php中调用未定义的函数pg_connect()调用堆栈:0.0002 322792 1. {main}()C:\ wamp \ www \ background.php: 0

通过在互联网上搜索,我找到了一些解决方案,并按照以下建议在php.ini中进行了更改,

uncommented, extension=php_pdo_pgsql.dll,
uncommented, extension=php_pgsql.dll,
uncommented, extension_dir = "c:/wamp/bin/php/php5.3.5/ext/",

我也在c:/wamp/bin/php/php5.3.5/ext/文件夹中有php_pdo_pgsql.dll和php_pgsql.dll文件。

任何建议都表示赞赏。

3 个答案:

答案 0 :(得分:25)

Apache 2.2.X配置

将下一行添加到Apache 2.2.x httpd.conf配置中:

LoadFile "C:/Program Files/PostgreSQL/{version}/bin/libpq.dll"

必须在下一行之前输入上一行。

LoadModule php5_module "c:/wamp/bin/php/php5.2.11/php5apache2_2.dll"

PHP 5.2.X配置

在php.ini配置文件中启用以下两行。通过'启用'我的意思是,删除尾随; (分号)。通过这些,您取消对该行的评论。

extension=php_pdo_pgsql.dll
extension=php_pgsql.dll

重启WAMP

通过在index.php中添加它进行测试

echo extension_loaded('pgsql') ? 'yes':'no';

(来源:http://www.plaatsoft.nl/wamp-postgresql-integration/

答案 1 :(得分:4)

如果我们安装WAMP服务器,我们将获得两个php.ini文件。 一个在C:\ wamp \ bin \ php \ php5.3.5,另一个在C:\ wamp \ bin \ apache \ Apache2.2.17 \ bin。

如果我们从浏览器执行php文件,那么将引用C:\ wamp \ bin \ apache \ Apache2.2.17 \ bin中的php.ini文件。 如果我们从命令行执行php文件,那么将引用C:\ wamp \ bin \ php \ php5.3.5中的php.ini文件。

我做了哪些更改在PHP-> PHP扩展中启用/禁用dll,所有更改都将保存在 C:\ wamp \ bin \ apache \ Apache2.2.17 \ bin \ php.ini文件。但是C:\ wamp \ bin \ php \ php5.3.5 \ php.ini文件保持不变。

对于我的问题,我做了以下更改

uncommented, extension=php_pdo_pgsql.dll,
uncommented, extension=php_pgsql.dll,
uncommented, extension_dir = "c:/wamp/bin/php/php5.3.5/ext/",

在C:\ wamp \ bin \ php \ php5.3.5 \ php.ini文件中。现在它工作得很好。 :)

答案 2 :(得分:0)

在我的情况下 阿帕奇/ 2.4.10 PHP版本5.4.32 PostgreSQL 9.3 我从PHP目录中将libpq.dll添加到Apache httpd.conf中,因为Apache拒绝从PostgreSQL 9.3开始使用libpq.dll