首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP启动:无法加载动态库,Windows、Apache 2.2、php 5.2.11

PHP启动:无法加载动态库,Windows、Apache 2.2、php 5.2.11
EN

Stack Overflow用户
提问于 2009-11-27 20:18:32
回答 5查看 42.5K关注 0票数 9

这正成为一个非常令人沮丧的问题。我正在尝试进行Apache2.2和PHP 5.2.11的全新安装。一切似乎都配置正确,但php模块没有启动...

代码语言:javascript
复制
PHP Warning:  PHP Startup: Unable to load dynamic library '.;C:/Program Files (x86)/Apache Software Foundation/Apache2.2/php/ext/php_mcrypt.dll' - The specified module could not be found.\r\n in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '.;C:/Program Files (x86)/Apache Software Foundation/Apache2.2/php/ext/php_mysql.dll' - The specified module could not be found.\r\n in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '.;C:/Program Files (x86)/Apache Software Foundation/Apache2.2/php/ext/php_openssl.dll' - The specified module could not be found.\r\n in Unknown on line 0

在php.ini中

代码语言:javascript
复制
include_path = ".;C:\Program Files (x86)\Apache Software Foundation\Apache2.2\php"
extension_dir = ".;C:/Program Files (x86)/Apache Software Foundation/Apache2.2/php/ext/"

所有的文件都在那里。ssleay32.dll、libmcrypt.dll、libmysql.dll、libeay32.dll等.dll文件都安装在...

C:/Program Files (x86)/Apache软件基础/Apache2.2/php/

我还将它们包含在C:\Windows\System32中

甚至将C:/Program Files (x86)/Apache Software Foundation/Apache2.2/php/添加到windows路径中。

我不知道为什么这不起作用,这感觉像是一个失败的局面。有没有人有什么办法让这一切正常工作?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-27 20:24:23

试试这个:

代码语言:javascript
复制
extension_dir = "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/php/ext/"

而不是从.;开始

票数 13
EN

Stack Overflow用户

发布于 2017-05-06 13:00:41

您只需在php.ini中取消对extension_dir的注释

票数 7
EN

Stack Overflow用户

发布于 2016-09-20 23:13:52

如果没有别的,只为我未来的自己。这是在IIS 8上的Windows中运行的PHP 5.2.13。

我得到了以下错误:

PHP警告:

启动:无法加载动态库'C:\Program Files (x86)\PHP\ext\php_openssl.dll‘-找不到指定的模块。

phpinfo()加载的php.ini文件是C:\Program Files (x86)\PHP\php.ini

扩展目录:

代码语言:javascript
复制
extension_dir ="C:\Program Files (x86)\PHP\ext"

以下是php.ini文件的最后两行:

代码语言:javascript
复制
[PHP_SQLSRV]
extension=php_sqlsrv_52_nts_vc6.dll
[PHP_OPENSSL]
extension=php_openssl.dll

php_openssl.dllphp_sqlsrv_52_nts_vc6.dll文件位于ext目录中。php_openssl.dll没有损坏(它的文件大小与另一台正在运行的机器上的文件大小相同)。

PHP将找到sqlsrv dll,但不会找到openssl dll。不知道为什么。再多的IIS重新启动也没有起到任何作用。

在我了解更多之前,解决方案是使用Windows PHP安装程序安装openssl.dll扩展。您可以重新运行安装程序并选择“更改”,它允许您添加或删除库。现在我看不出文件和php.ini文件有什么不同,但是现在文件加载了。

我怀疑我的问题实际上与这个comment about OpenSSL installation on Windows类似

此时,当您启动Apache时,它将尝试加载php_openssl.dll,但如果您的设置类似于我的设置,您将看到一个错误。我更喜欢手动启动Apache,错误出现在一个对话框中:"The序号4114无法在动态链接库LIBEAY32.dll中找到“。(我不确定如果将Apache作为服务启动,您是否会收到此消息)。Apache日志还包含一条错误消息,指出无法加载php_openssl.dll,尽管该消息没有指定libeay32.dll。欢迎来到DLL地狱。

因为php_openssl.dll依赖于Libeay32.dll (也依赖于ssleay32.dll),所以libeay32.dll才会出现。我认为发生的情况是,Apache首先尝试以编程方式从extension_dir键指定的路径加载php_openssl.dll。但是,所谓的依赖DLL的加载留给了Windows的默认机制。如果Windows发现依赖DLL的不兼容版本,则会出现错误。

在尝试从命令行运行php -i时,我注意到有关ssleay32.dll的错误。我只是假设它在环境中没有它。IIS在其日志中没有提到任何ssleay32.dll错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1808442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档