2012-06-21 106 views
1

我想从使用PHP(版本5.3.12)的Windows Server 2008计算机发送cURL请求并不断收到错误Could not resolve proxy: http=127.0.0.1; Host not found。据我所知,我没有使用代理 - CURLOPT_PROXY没有设置,我运行了netsh winhttp show proxy以确保没有系统范围的设置,我甚至检查了我的机器上的所有浏览器确认没有配置使用代理(只是为了防止这可能会产生影响)。我无法弄清为什么cURL坚持告诉我,1)我使用的是代理服务器,2)它无法连接到它。PHP cURL错误:无法解析代理

我能够通过明确地禁止使用代理通过curl_setopt($curl, CURLOPT_PROXY, '');来解决错误,但这不是最好的解决方案 - 我使用cURL的很多地方都在库中,它会是一个痛苦(更不用说不太可维护)来解决这个问题,并将这条线路融入其中。我宁愿找到根本原因并在那里修复它。

如果有帮助,这种情况只发生在POST请求中。命令行cURL(从Git bash提示符)工作正常。这些调用也可以在我们的开发机器上正常工作,所以它似乎是我的机器特有的东西。

如果我需要应用上面的黑客,我会的,但我想,在我诉诸于之前,我会问这么好的人们 - 是否有我失踪的地方可以配置使用代理?让我知道是否有任何其他有用的信息,我忘了添加。

回答

1

cURL依赖于环境变量进行代理设置。您可以通过“高级系统设置”在Windows上进行设置。

您需要为最佳控制设置和/或更改的变量为“http_proxy”,“HTTPS_PROXY”,“FTP_PROXY”,“ALL_PROXY”和“NO_PROXY”。

不过,如果你只是想避免使用代理功能,你也许可以与创建系统变量http_proxy并将其设置为localhost,然后另外创建系统变量NO_PROXY并将其设置为*脱身,这将告诉cURL避免使用代理进行任何连接。

在任何情况下,请务必重新启动任何命令窗口以强制识别系统环境变量的更改。

[source - cURL Manual]

+0

诀窍。谢谢(你的)信息! –