我正在开发一个php应用程序。我用的是wamp,我是公司代理。我使用cntlm来验证NTLM。我需要curl google geocoding api,为了做到这一点,我使用了以下正在工作的设置:
curl_setopt($ch,CURLOPT_PROXY, '127.0.0.1:3128');
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
我想找到一种方法来避免为CURL设置这些选项。我相信我可以玩Apache设置,但我不确定。我需要找到这个解决方案的原因是:
- 在生产环境中将没有这样的代理(目前只有在环境变量设置为DEV env时才使用上述选项,但仍然不是最佳解决方案)
- 如果我想使用第三方SDK(如facebook php SDK),这些内部使用CURL,但他们不一定公开方法来改变CURL选项(例如facebook SDK没有)。我不想改变SDK源代码来适应我的代理
我试过了:
到目前为止,我在apache上打开了proxy_module,并在httpd.conf中添加了以下行,但没有成功
ProxyRemote * http://127.0.0.1:3128
我还是不能上网。我在谷歌上搜索了很多,但我找不到解决方案,有什么想法吗?
我发现很多人都在谈论同样的问题,但我没有找到任何全面的解决方案,因此我提出赏金。
发现:
有这个错误,我发现:但我不确定这是否会为curl工作,无论如何我找不到如何修改php.ini
[2010-12-20 14:03 UTC]jani@php.net-Summary:修改默认的http-wrapper添加php.ini选项来设置包装器的默认代理-包:功能/变更请求+包:流相关-PHP版本:5CVS+PHP版本:*
和
[2011-04-05 11:29 UTC] play4fun_82 at yahoo dot com嗨,我有同样的问题。我的解决方案是通过代理服务器与cntml隧道的工具。您配置cntml代理来转发http请求在本地主机上以适当的端口接收到目的地身份验证。
在梨中,你只需配置
梨配置设置http_proxy 127.0.0.1:3128
3128 -在cntlm中配置的端口(它可以是任何其他空闲端口)。
Thanks very much
您说您希望在WAMP上实现此功能,仅用于您的开发计算机,对吗?SDK在生产环境中无需修改即可工作,因此您可以利用windows的Host文件来重定向请求。
看完这篇文章后,我正打算认输,但实际上有一个简单的解决方案。我不得不使用windows环境变量,最后将系统变量设置为https_proxy=https://localhost:3128工作了!之前它不能工作,因为我把它设置为127.0.0.1:3128。运行命令
reg query "HKEY_CURRENT_USER'Software'Microsoft'Windows'CurrentVersion'Internet Settings" | find /i "proxyserver"
然后在系统变量中复制/粘贴答案,现在它工作了!!
我认为你可以通过代理工具,如Proxifier(http://www.proxifier.com)。
当然,它们可以从选定的应用程序捕获流量并自动重定向到代理。
不是一个完美的解决方案,但应该在开发机器上有用。