为什么PHP拒绝在Windows上启用cURL
我正在为什么PHP拒绝在Windows上启用cURL,php,curl,php-extension,Php,Curl,Php Extension,我正在windows7x64上使用php5.5.25和apache2.4,无法激活cURL模块。我环顾四周,用尽了我所能想到的一切。请协助: 在php.ini中,行extension=php_curl.dll处于活动状态,文件php_curl.dll位于扩展目录C:\php\ext 在php.ini中,当我设置extension\u dir=ext时,没有加载任何扩展。Apache启动时,我收到几条消息,类似于无法加载动态库ext\php\u openssl.dll-找不到指定的模块。 当我使
windows7x64
上使用php5.5.25
和apache2.4
,无法激活cURL模块。我环顾四周,用尽了我所能想到的一切。请协助:
- 在
中,行php.ini
处于活动状态,文件extension=php_curl.dll
位于扩展目录php_curl.dll
C:\php\ext
- 在
中,当我设置php.ini
时,没有加载任何扩展。Apache启动时,我收到几条消息,类似于extension\u dir=ext
ext\php\u openssl.dll无法加载动态库
-找不到指定的模块。
- 当我使用完整路径并设置
时,除了cURL之外,所有扩展都可以正常加载。我收到错误:extension\u dir=C:\php\ext
C:\php\ext\php\u curl.dll无法加载动态库
-找不到指定的模块。
- 我已尝试将扩展名重命名为
并调整php\u curl.new.dll
,但收到一条关于新文件名的错误消息。我还从php.ini
下载了一个新的DLL副本,但这并没有什么不同windows.php.net
- 我已经检查了
(右键单击文件>>属性>>安全选项卡)的文件权限,它们与成功加载的扩展的权限相同php_curl.dll
- 我已按照响应的指示,将
和libeay32.dll
从PHP bin目录复制并粘贴到System32和SysWOW64目录ssleay32.dll
- 我确信我正在编辑正确的
,因为当我将php.ini
值从extension\u dir
更改为ext
时,php启动错误消息发生了更改,如上所述C:\php\ext
- 我已确保在
配置更改之间重新启动Apache服务器php.ini
- 如果在PHP脚本中执行
,我得到了var_dump(文件_存在('C:\PHP\ext\PHP_curl.dll')
,这样PHP就可以看到这个文件了李>布尔值True
还有什么可以解释为什么没有启用cURL模块?我认为在
路径中也需要libssh2.dll
。在windows上,cURL执行需要SSL证书。可能是因为显示了其他错误
将下面的代码放在curl_exec(curlHandle)之前
史蒂文·希尔德为我指明了正确的方向,这值得赞扬
问题是Windows无法看到PHP目录中的另一个dlllibssh2.dll
。将此文件复制到C:\Windows\SysWOW64
和C:\Windows\System32
,以及我的OP中的其他两个DLL文件(libeay32.DLL
和ssleay32.DLL
)起作用
不过,我对这个解决方案感到不舒服,因为当更新到新的PHP版本时,我很难记住用新版本覆盖这些DLL。
因此,我决定从System32
和SysWOW64
目录中删除所有3个DLL。相反,我只是将PHP bin目录添加到Windows的PATH变量中,以便下次操作系统查找丢失的文件时,它也会在该目录中查找。如果另一个DLL出现类似问题,它将自动解决,这是一个额外的好处
要将PHP bin添加到Windows的路径,请执行以下操作:
从开始菜单
搜索栏中,搜索并选择高级系统设置
单击环境变量
。向下滚动系统变量列表以选择Path
,然后单击Edit…
打开当前路径设置
;C:\php
或当前设置中包含的任何目录php.exe
(分号用于分隔路径)成功了!将随机DLL从
C:\php
复制到C:\Windows\SysWOW64
以后可能会导致问题,因为当我更改php版本时,我不记得用新版本的DLL覆盖这些副本。我正在考虑将C:\php
添加到Windows路径变量。这样,所有的PHP DLL文件都可以放在一起,并且更易于维护。你认为这有什么大的缺点吗?不,这是明智的做法。虽然你的意思是C:\php\ext
,对吗?我已经很久没有在Windows上运行PHP了…扩展名在C:\PHP\ext
中,但Windows看不到的DLL在C:\PHP
中,将此文件与PHP.exe放在同一位置,PHP.ini(一起)解决了这个问题。错过了那个小文件。谢谢!!节省了我的时间:)cURL模块根本无法加载,因此我的脚本没有可用的cURL函数。我的问题是操作系统需要,但找不到libssh2.dll
。
//to ignore the SSL certificate in windows
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER,false);