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

Php 致命错误:调用未定义的函数pg_connect,php,windows,wamp,Php,Windows,Wamp,我使用的是Windows7、PHP5.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:\wa

我使用的是Windows7、PHP5.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

通过在internet中搜索,我找到了一些解决方案,并在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文件


非常感谢您的建议。

Apache2.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”

PHP5.2.X配置

在php.ini配置文件中启用以下两行。我所说的“启用”是指删除尾随;(分号)。通过这些,您可以取消对该行的注释

extension=php_pdo_pgsql.dll
extension=php_pgsql.dll
重新启动WAMP

通过将其添加到index.php中进行测试

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

(来源:)

如果我们安装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 extensions中做了哪些更改来启用/禁用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文件中。现在它运行良好。:)

就我的情况而言 Apache/2.4.10 PHP版本5.4.32 PostgeSQL 9.3
我从PHP目录中将libpq.dll添加到Apache httpd.conf中,因为Apache拒绝从PostgreSQL 9.3开始使用libpq.dll(p>是否在PHP.ini中启用此扩展并重新启动服务器?)。我启用了。但同样的错误。在apache配置文件中,将此加载文件放在“C:\php\libpq.dll”中。另外请查看文档:您好,jordi kroon先生,正如我在httpd.conf文件中包含以下内容时您所建议的:lineLoadFile“C:/Program Files/PostgreSQL/9.1/bin/libpq.dll”,我的服务器本身没有正确重新启动。该配置文件中已存在LoadModule php5_模块“c:/wamp/bin/php/php5.3.5/php5apache2_2.dll”。加载文件。。应该指向libpq.dll。检查路径,我检查过了。路径是正确的。LoadFile“C:/Program Files/PostgreSQL/9.1/bin/libpq.dll”,因为路径中“Program Files”包含空格,我是否应该转义该空格?不,因为它们周围有引号。检查apache错误日志。apache错误日志还包含相同的错误:PHP致命错误:调用第3行PHP堆栈跟踪:PHP 1上C:\wamp\www\background.PHP中未定义的函数pg_connect()。{main}()C:\wamp\www\background.php:0[Wed Feb 13 14:50:53 2013][error][client 127.0.0.1]文件不存在:C:/wamp/www/favicon.ico