PHP 5.2.8拒绝加载php_pgsql.dll
,出现以下错误:
警告:PHP启动:无法加载dynamic库'D:\ PHP \ ext \ php_pgsql.dll' – 指定的模块找不到。
在第0行的未知
.dll存在于PHP / ext /中。
有没有其他人在Windows之前的PHP有这个问题?
查看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的人,则需要:
这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.dll
和extension=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.dll
来wamp\bin\php\phpX.XX
wamp\bin\apache\Apache2.2*\bin
。 并重新启动Wampserver。