2016-12-12 56 views
2

我试图将我的服务器升级到最新的Apache 2.4.23和PHP 7.1,但它无法加载php_curl库,不知道为什么。Apache 2.4.23 PHP7.x Windows 10 x64 php_curl无法正常工作

PHP Warning: PHP Startup: Unable to load dynamic library 'ext\\php_curl.dll' - The specified procedure could not be found.\r\n in Unknown on line 0 

我曾尝试以下

  1. 更改扩展路径如d全路径:\网络服务器\ PHP \分机
  2. 复制php_curl.dll, libssh2.dll, libeay32.dll, ssleay32.dllSystem32下PHP /转阿帕奇/ binphp
  3. 增加了php路径system var iable
  4. 曾经尝试都PHP7和PHP7.1
  5. 所有这些都是x64和所有其他扩展成功加载和服务器的工作,但只有php_curl没有在php.ini工作
  6. 注释掉扩展

  • 的Apache 2.4.23 64
  • PHP7也试图PHP7.1(线程安全)64
  • Windows 10 x64
+0

取道路径到php关闭路径 – RiggsFolly

+0

该dll只需要复制到'apache \ bin'文件夹 – RiggsFolly

+0

不要复制dll到'\ windows \ system32'文件夹 – RiggsFolly

回答

0

解决方案:将libeay32.dll,libssh2.dll,ssleay32.dll文件放在httpd.conf的ServerRoot指令中指定的目录下。这些DLL可以在php根文件夹下找到。

原因:

问题是php_curl.dll需要访问以下库加载时:的libeay32.dll,libssh2.dll,ssleay32.dll,它没有任何意义,如果你把它们放在./php/ext目录或如果你把PHP扩展名在PHP根目录。

当然,你可以把它们放在C:\ Windows或在一些全球性的文件夹中PATH定义,但如果你不想这样做,你想你的Apache + PHP安装了便携式:

指定的路径在httpd.conf中的ServerRoot被视为php的主路径。该行为类似于在./index.php中包含./path/to/some.php文件并且some.php文件的主路径仍然是./其中index.php所在的目录。

简而言之,只需将这三个DLL正确放入您在httpd.conf ServerRoot指令中指定的目录中,并且php_curl.dll不会再次加载失败。

+1

是的,我已经阅读过这个解决方案并试过了,它没有工作。不过,我通过从wamp复制php目录来修复它,好像这些dll文件有bug并且wamp开发者似乎编译它们自己。 –

相关问题