Apache 2.4.23 PHP7.x Windows 10 x64 php_curl无法正常工作

时间:2016-12-12 18:38:02

标签: php windows apache 64-bit php-curl

我试图将我的服务器升级到最新的Apache 2.4.23和PHP 7.1但是它无法加载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:\ webserver \ php \ ext
  2. php_curl.dll, libssh2.dll, libeay32.dll, ssleay32.dll复制到 System32 php / ext apache / bin php < / LI>
  3. 添加了php路径系统变量
  4. 已尝试过PHP7和PHP7.1
  5. 所有这些都是x64并且所有其他扩展程序已成功加载且服务器正常工作但只有php_curl无法正常工作
  6. php.ini
  7. 中未注释的扩展名
    • Apache 2.4.23 x64
    • PHP7并尝试了PHP7.1(线程安全)x64
    • Windows 10 x64

1 个答案:

答案 0 :(得分:1)

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

原因:

问题是php_curl.dll在加载时需要访问以下库:libeay32.dll,libssh2.dll,ssleay32.dll如果你将它们放在./php/ext目录中或者你放入php扩展名它没有意义在php root dir。

当然你可以将它们放在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将无法再次加载。