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

时间:2009-11-27 12:18:32

标签: php windows apache

这已成为一个非常令人沮丧的问题。我正在尝试干净安装apache 2.2和PHP 5.2.11。一切似乎都配置正确,但PHP模块没有启动......

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

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 Software Foundation / Apache2.2 / php /

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

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

我不知道为什么这不起作用,感觉就像一场没有胜利的局面。任何人都有任何关于如何使这一切工作正常的想法?

5 个答案:

答案 0 :(得分:10)

试试这个:

extension_dir = "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/php/ext/"

不以.;

开头

答案 1 :(得分:2)

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

我收到以下错误:

  

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

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

扩展目录:

extension_dir ="C:\Program Files (x86)\PHP\ext"

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

[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,错误出现在对话框中:"序号4114无法位于动态链接库LIBEAY32.dll"中。 (如果您将Apache作为服务启动,我不确定您是否会收到此消息)。 Apache日志还包含一条错误消息,指出无法加载php_openssl.dll,但该消息并未命名libeay32.dll。欢迎来到DLL Hell。

     

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

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

答案 2 :(得分:1)

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

即可

enter image description here

答案 3 :(得分:0)

有相同的错误,但不是复制文件,而是将php文件夹添加到系统路径并重新启动服务器。

答案 4 :(得分:0)

Windows 8.1的系统路径名称存在一个围嘴问题,由于该行太长,无法使用常规编辑器进行编辑……并且对于PHP模块扩展,必须良好地加载才能在系统环境中定义PHP路径。 / p>

只有一件事对我有帮助: https://rix0rrr.github.io/WindowsPathEditor/