2

我正在尝试使用 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)它无法连接到它。

我可以通过显式禁用代理来解决错误curl_setopt($curl, CURLOPT_PROXY, '');,但这不是最好的解决方案——我使用 cURL 的很多地方都在库中,这会很痛苦(更不用说难以维护)绕过并将这条线破解到所有这些中。我宁愿找到根本原因并在那里修复它。

如果它有帮助,到目前为止,这仅发生在我的 POST 请求中。命令行 cURL(来自 Git bash 提示符)工作正常。这些调用在我们的开发机器上也可以正常工作,所以它似乎是我机器特有的。

如果我需要应用上述技巧,我会的,但我想在我诉诸之前,我会问 SO 的好人 - 有没有我遗漏的地方可以配置代理的使用?如果我忘记添加任何其他有用的信息,请告诉我。

4

1 回答 1

1

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

您需要设置和/或更改以获得最佳控制的变量是“http_proxy”、“HTTPS_PROXY”、“FTP_PROXY”、“ALL_PROXY”和“NO_PROXY”。

但是,如果您只是想完全避免使用代理,您可以创建系统变量http_proxy并将其设置为localhost,然后另外创建系统变量NO_PROXY并将其设置为*,这将告诉 cURL 避免使用代理任何连接。

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

[来源 - cURL 手册]

于 2012-07-10T08:33:48.230 回答