我正在使用PHP与Microsoft Exchange进行通信。在我的生产服务器上一切正常,但我的开发机器上一直有401 Unauthorized。我尝试从命令行使用curl,我得到相同的结果。
使用以下命令在我的机器上返回“401”:
curl https://mail.example.com/EWS/Exchange.asmx -w %{http_code} --ntlm -u username:password
同样的确切调用在我的生产机器上返回“302”,这正是我所期望的。
我的开发机器正在使用curl 7.19.7而我的生产机器正在使用curl 7.18.0。
答案 0 :(得分:7)
这是一个老问题,但如果它最终可以帮助任何人,我想我会发一个答案。
在某些最新版本的Ubuntu上有NTLM和curl的错误(我相信10.04以上)。
如果您在ubuntu上使用PHP的curl模块,并且您的libcurl版本受此错误的影响,这可以解释您的身份验证请求失败的原因。
如果将verbose标志添加到命令(-v),您应该在响应部分中看到类似的内容:
如果你看到这个,你就会受到这个bug的影响,你必须降级你的图书馆或找到另一台机器。
我希望这会有所帮助:P
答案 1 :(得分:0)
对于所有Centos / RHEL 6.X用户,请查看: