pgsql扩展未加载

时间:2017-08-14 13:44:28

标签: php apache postgresql

我正在尝试在Windows 10 64位(WAPP)上使用pgsql扩展。
我有:

  • 重新启动Apache
  • 取消注释php.ini
  • 中的所有postgresql扩展程序
  • 使用LoadFile加载pgsql.dll
  • pgsql.dll移动到Apache bin(我从php文件夹和postgresql尝试了两个dll)

但仍然没有结果 pgsql仅在php.exe -m中可见,但在phpinfo()extension_loaded()get_loaded_extensions()中不可见。 我的php版本为7.1.8,PostgreSQL为9.6,Apache为2.4.27 我的php.exe -m输出:
php -m
可能是什么问题?

3 个答案:

答案 0 :(得分:3)

[解决]

好的,经过几个小时的查看,我发现了问题,并且能够解决问题,pdo_pgsql和pgsql模块没有在phpinfo()中显示。

[溶液]

在php.ini中取消注释扩展后,进入httpd.conf并在所有LoadModule行的顶部添加以下内容:

LoadFile“C:/ Program Files / PostgreSQL / 9.6 / bin / libpq.dll”

(假设您使用的是最新版本的PostgreSQL,否则请将数字更改为您正在使用的版本)。

保存并重启Apache。转到phpinfo(),你会看到它被加载了。

[原因]

即使您将libpg.dll复制到Apache / bin文件夹中,它也无法看到它。

[环境]

  • Windows Server 2016(也适用于Windows 10)
  • Apache 2.4.26
  • (x64)PHP 7.1.8(x64 ThreadSafe VC14)
  • PostgreSQL 9.6.4(x64)

答案 1 :(得分:0)

通常,命令行PHP不与Apache共享配置文件,换句话说,Apache php.ini与您编辑的那个不同。

使用运行apache的phpinfo()并搜索php.ini以找到已加载的配置文件。

答案 2 :(得分:0)

公认的解决方案也适用于最新版本的PHP 7,即Windows 10环境下的7.3.5。

在所有LoadModule指令的顶部包含LoadFile指令非常容易。我也一直在努力寻找解决方案。似乎在上述环境中存在一些问题,默认情况下libpq.dll没有被加载。解决方案很棒。