这已成为一个非常令人沮丧的问题。我正在尝试干净安装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路径。
我不知道为什么这不起作用,感觉就像一场没有胜利的局面。任何人都有任何关于如何使这一切工作正常的想法?
答案 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.dll
和php_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)
答案 3 :(得分:0)
有相同的错误,但不是复制文件,而是将php文件夹添加到系统路径并重新启动服务器。
答案 4 :(得分:0)
Windows 8.1的系统路径名称存在一个围嘴问题,由于该行太长,无法使用常规编辑器进行编辑……并且对于PHP模块扩展,必须良好地加载才能在系统环境中定义PHP路径。 / p>
只有一件事对我有帮助: https://rix0rrr.github.io/WindowsPathEditor/