CURLOPT_NOPROXY在PHP中不起作用

时间:2013-09-06 08:57:39

标签: php curl proxy

我的Ubuntu机器上的/ etc / environment中有http_proxy设置。我已将CURLOPT_NOPROXY定义为10177,然后执行

$curl = curl_init('http://127.0.0.1:4444/wd/hub');
curl_setopt($curl, CURLOPT_NOPROXY, '127.0.0.1'); // or '*'
// ... set others params and options ...
curl_exec($curl);

但这不会影响我的脚本,而是收到代理错误消息而不是WebDriver响应。同时从命令行使用curl --noproxy 127.0.0.1 http://127.0.0.1:4444/wd/hub效果很好。

其他环境信息:

curl --version
curl 7.22.0 (x86_64-pc-linux-gnu) 
libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 
libidn/1.23 librtmp/2.3 
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp smtp smtps telnet tftp 
Features: GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP 

PHP版本是5.3.10。

如何从我的PHP脚本中设置noproxy选项?

更新:它看起来应该在PHP中运行https://bugs.php.net/bug.php?id=53543

3 个答案:

答案 0 :(得分:6)

它发生在我身上,所以我将代理设置为空字符串并且工作正常

curl_setopt($ch, CURLOPT_PROXY, '');

答案 1 :(得分:1)

我也只是在PHP curl调用中使用代理卷曲问题。我最终发现SUSE特别是SLES 11设置了一些代理值。更改这些代理值修复了linux中的问题,但我不得不重新启动整个服务器而不仅仅是apache,因为更改会在PHP中生效。我使用YAST来更改服务器上的代理值。

答案 2 :(得分:1)

根据PHP's Manual,您应该将CURLOPT_HTTPPROXYTUNNEL设置为false:

curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, false);