【问题标题】:CURLOPT_NOPROXY does not affect in PHPCURLOPT_NOPROXY 在 PHP 中不受影响
【发布时间】:2013-09-10 07:40:13
【问题描述】:

我的 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

【问题讨论】:

  • 当 cUrl 从 localhost 到非 ssl 端点时我遇到了这个问题
  • 2019 年的旁注:CURLOPT_NOPROXY 一直是 removed from the PHP docs,当在 PHP 5.5 中使用 CURLOPT_NOPROXY 时,我得到 Segmentation fault 没有更多细节。

标签: php curl proxy


【解决方案1】:

它发生在我身上,所以我将代理设置为空字符串并且它起作用了

curl_setopt($ch, CURLOPT_PROXY, '');

【讨论】:

  • 在这种情况下使用了不对应的系统代理。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, false);
    

    【讨论】:

    • 这样的布尔标志会更优雅,不幸的是,这个答案对我不起作用,但是@user3107408 的答案确实如此。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 2010-11-10
    • 2016-10-29
    • 2019-08-14
    • 1970-01-01
    相关资源
    最近更新 更多