【问题标题】:Force IPv4 in cURL in PHP application在 PHP 应用程序的 cURL 中强制 IPv4
【发布时间】:2014-10-28 00:45:41
【问题描述】:

有没有办法强制 cURL 使用 IPv4?我正在寻找一个全局设置,比如php.ini 设置或类似的设置。

【问题讨论】:

  • @PeeHaa curl_setopt 是全局设置吗?我不熟悉该链接中其他答案的方法。你能解释一下吗?

标签: php curl configuration ip


【解决方案1】:

请试试这个代码,curl_setopt
这将强制 IPV4 解析。

if (defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')){
   curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}

defined 确保全局常量在您的 PHP 版本上可用。

【讨论】:

  • 好的,但不是全局设置,我正在寻找全局设置。
  • @neoteknic 你有没有办法在全球范围内做到这一点?
  • 不,你不能,但你不能,或者你必须在系统上禁用 ipv6,只需在任何地方或函数中添加这一行: curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);跨度>
  • 对于 apache,你可以这样做:听 0.0.0.0:80 而不是 80(可以为 modphp 工作,但 modphp 已过时),你可以在 php-fpm 中做同样的想法,但它只在服务器端,当您使用 curl 时,它是客户端,因此“监听端口设置”​​是另一回事。
  • 这解决了我的问题(谢谢)。在我的情况下,目标主机对其 DNS 反向查找进行了更改。之前它只显示 IPv4 地址,而现在它还提供 IPv6 地址。但这打破了使用特定传出源 IP 地址(即 IPv4)的绑定尝试。有人可能会假设,由于尝试绑定到本地 IPv4 IP 地址,远程解析也会效仿并使用 IPv4。但这不是它的工作方式(至少在 PHP 7.2 中)。错误/功能请求 - curl.haxx.se/mail/tracker-2014-02/0025.htmlcurl.haxx.se/mail/tracker-2010-12/0008.html
猜你喜欢
  • 2013-10-25
  • 2019-05-02
  • 2011-11-28
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
相关资源
最近更新 更多