7

我正在使用 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/",

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

任何建议表示赞赏。

4

3 回答 3

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/ )

于 2013-02-13T08:15:33.137 回答
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 文件中。现在它工作得很好。:)

于 2013-02-13T12:30:04.450 回答
0

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

于 2014-11-09T14:43:58.383 回答