PHP不加载在Windows上php_pgsql.dll

PHP 5.2.8拒绝加载php_pgsql.dll ,出现以下错误:

警告:PHP启动:无法加载dynamic库'D:\ PHP \ ext \ php_pgsql.dll' – 指定的模块找不到。

在第0行的未知

.dll存在于PHP / ext /中。

有没有其他人在Windows之前的PHP有这个问题?

Solutions Collecting From Web of "PHP不加载在Windows上php_pgsql.dll"

查看PHP PostgreSQL安装页面上的信息: http : //us.php.net/manual/en/pgsql.installation.php

在配置了Apache的Windows服务器上,将以下行添加到httpd.conf以加载libpq.dll可为您节省大量时间:

 LoadFile "C:/Program Files/PostgreSQL/8.4/bin/libpq.dll" 

请注意,您必须相应地将您的文件夹更改为您安装的PostgreSQL的安装路径和版本。 另外请注意,不建议在生产环境的同一台服务器上安装Apache和PostgreSQL。

这固定我的设置即时。

这发生在我也用PHP 5.4.1

复制有问题的DLL到处都没有工作,我没有在服务器上安装PostgreSQL,但也计划使用不同的Postgres版本的PHP,所以我发现唯一的解决方案是把httpd.conf中的一行喜欢这个:

 LoadFile "C:/Program Files/PostgreSQL/8.4/bin/libpq.dll" 

但是提到与PHP捆绑在一起的libpq.dll,像这样:

 LoadFile "C:/php/libpq.dll" 

之后,它对我的​​工作很好。

问题是与php_pgsql.dll使用的相关库 – 像libpq.dll,OpenSLL的等您需要找到它们(从Postgres的zip分发,从安装的psqlODBC驱动程序等),并将它们放在一个文件夹这是在路径中。 至于所有DLL的列表 – 使用MS Dependency Walker(depends.exe)。

另一个重要的位 – Apache(如果你使用的是Apache)有它自己的一套OpenSSL DLLs。 替换或重命名这些,以免与Postgres发行版的冲突。

对于那些愿意让他们的PHP安装只能访问PostGres服务器,而不实际安装PostGres的人,则需要:

  • 在PHP.INI中启用php_pgsql.dll(和php_pdo_pgsql.dll,如果使用PDO)扩展名,
  • 确保libpq.dll,libiconv-2.dll和libintl-8.dll在路径中。 这些是php_pgsql.dll依赖项。

这3个DLL可以在PostGres安装中找到。 我只是将它们复制到apache \ bin中,这样我就保留了一切自包含的东西。 这样做,Apache可以启动PHP引擎就好了,支持PostGres。

您需要从wamp \ bin \ php \ php5.3.5复制libpq.dll来打包\ bin \ apache \ Apache2.2.17 \ bin。 再次重新启动Wamp服务器。 现在我们已经完成了php的配置。 接下来我们将安装phpPgAdmin并使用它。

只是一个想法 – 确保Postgres二进制文件在SYSTEM路径中,而不是用户特定的路径。 碰巧,这是我的机器上的问题。 🙂

编辑:

想一想,这就解释了为什么Dependency Walker会报告所有的A-OK,但问题仍然存在 – 在您自己的帐户下运行DW,而Apache以SYSTEM身份运行,因此不会提供您的个人PATH设置。

特别是对于WAMP服务器设置,您需要将libpg.dll文件复制到“C:\ wamp \ bin \ apache \ Apache2.2.21 \ bin \”或类似文件中。 复制到.. \ php \ ext \并调整PATH env变量是不够的(如果有效的话)。

原始答案来自这里: http ://www.wampserver.com/phorum/read.php? 2,40270,57932

特别是对于XAMPP设置,我发现我只需要将libpg.dll文件复制到.. \ php \ ext \目录中。

正如OndřejBouda所说:设置Windows环境变量就足够了。 没有dll副本,没有条目http-conf。 只需将php目录(C:\ xampp \ php)添加到PATH即可。 如果你使用这个,不要忘记重新启动XAMPP-Control-Panel,否则它将不知道更改。 (并重新启动Apache的Apache)。

例如,在XAMPP上,将PHP目录(即C:\ xampp \ php)放入系统PATH变量就足够了。 – OndřejBouda

只是分享什么对我libpq.dll ,没有处理libpq.dll 我在php.ini中取消了对extension=php_pdo_pgsql.dllextension=php_pgsql.dll注释。 起初,Apache拒绝启动。

然后我将"C:\Program Files (x86)\PostgreSQL\9.4\bin\" (取决于您的安装)添加到Windows环境PATH中,成功启动apache并运行。

我唯一一次看到这个错误(以及文件名和ext路径是绝对正确的),当我试图使用一个不正确的版本的DLL ie。 我使用了一个针对不同版本的PHP编译的程序。

确保你的版本确实是针对PHP 5.2.8编译的版本。

编辑:或者,文件的权限设置不正确。

在Vista上使用LIBPQ.DLL问题…

  • 检查确保你确实已经安装了postgres。 如果你在安装postgres API的windows上安装php,没有安装postgres,你可能会得到这个警告。 只需单击Windows安装程序上的所有内容就太简单了。

  • 注释掉php.ini中的相关行。

我得到的解决方案:

1)如果你想加载php_pdo_pgsql扩展名,请加载php_pdo。 (在php.ini中)

2)php_pgsql.dll和php_pdo_pgsql.dll依赖于libpq.dll和php5ts.dll。 libpg.dll是来自postgreSQL的库,但它已经被捆绑到PHP的二进制包中。 将PHP配置为使用Apache的模块时,无法正确加载依赖库。 所以你需要在Apache中加载它。

配置在httpd.conf中,两行应该在Loadmodulee php5_module之前

LoadFile“到/php5gs.dll的完整路径”LoadFile“到libpg.dll的完整路径”

希望它是有帮助的。

您必须将以下行添加到httpd.conf文件中:

 PHPIniDir "c:/PHP/" Loadfile "C:\php\php5ts.dll" Loadfile "C:\php\libpq.dll" Loadmodulee php5_module "c:/PHP/php5apache2_2.dll" 

资料来源: http : //www.php.net/manual/en/pgsql.setup.php

这是@Dayron阿玛斯培尼亚的答案更新。 php捆绑的pgsql'dll'位于以下位置:

 LoadFile "C:/wamp/bin/php/php5.4.12/libpq.dll" 

除了在php.ini文件中取消注释所需的行之外,将上面的行添加到httpd.conf文件中解决了我的问题。

我只是这样做,它在php.ini内的php文件夹中工作正常,我改变了这一行

 extension=php_openssl.dll 

 extension=C:\php\ext\php_openssl.dll 

php_openssl.dll在无法找到的ext文件夹中。

将文件libpq.dll从位置/ bin / php /复制到位置/ bin / apache // bin。 重新启动wamp服务器。

我发现这为我工作:

安装PostgreSQL之后,您需要从wamp\bin\php\phpX.XX拷贝libpq.dllwamp\bin\php\phpX.XX wamp\bin\apache\Apache2.2*\bin 并重新启动Wampserver。