【发布时间】:2018-04-18 20:21:38
【问题描述】:
我在 Centos 6,PHP 5.6.35,
curl 7.59.0 (x86_64-redhat-linux-gnu) libcurl/7.59.0 OpenSSL/1.0.1e zlib/1.2.3 c-ares/1.14.0 libssh2/1.8.0 nghttp2/1.6.0
我正在尝试强制 curl 使用带有 HTTPS 的 IP(我的 LAN 中的网络服务器):
curl_setopt($ch, CURLOPT_URL, "https://" . $domain . "/");
curl_setopt($ch, CURLOPT_RESOLVE, array( $domain . ":443:192.168.1.10"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$output = curl_exec($ch);
它一直连接到 $domain 的真实公共 IP。 我也明白了:
PHP 注意:使用未定义的常量 CURLOPT_RESOLVE - 在 ...中假定为“CURLOPT_RESOLVE”
PHP 警告:curl_setopt() 期望参数 2 很长,字符串在 ...
【问题讨论】:
-
令人惊讶。在 PHP 5.6.35 源代码中,我们可以看到 cURL >= 7.21.3 的常量声明:github.com/php/php-src/blob/…
-
你能试试这个值
10203(0x27DB)吗?curl_setopt($ch, 10203, array( $domain . ":443:192.168.1.10")); -
使用10203,不再有Notice或Warning,但仍在使用真实IP。
-
print_r(curl_version());是否输出相同的版本 (7.59.0)? -
[version] => 7.59.0, [version_number] => 473856, [age] => 4, [features] => 3113885