curl - 解决PHP CURL库中的等价物

时间:2012-05-03 14:01:56

标签: php http ssl curl

PHP CURL库中是否有curl --resolve ....的等价物?

背景:我有循环DNS(一个域名解析为多个IP),我想向特定的主机发送请求。我使用基于apache名称的虚拟主机,因此必须在HTTP请求中显示正确的域名。

我已尝试在请求网址中指定IP:curl_setopt($ch, CURLOPT_URL, '127.0.0.1'),并使用curl_setopt($ch, CURLOPT_HTTPHEADER, 'Host: example.com')。它适用于HTTP,但对于HTTPS,我收到SSL验证错误(显然CURL验证证书与URL主机名和非Host:主机名)。

使用hosts文件不是一个方便的选择。

3 个答案:

答案 0 :(得分:13)

首先,回答任何卷曲选项如何转换为libcurl(或PHP / CURL)的最佳方法是使用--libcurl选项。

如果您这样做,您将了解--resolve使用libcurl转换为CURLOPT_RESOLVE,并在PHP since 5.5.0中受支持。自7.21.3以来的libcurl支持。

答案 1 :(得分:1)

我在Python的帮助下有解决方案。

在.php文件中,只需回显python的输出:

<?php
echo passthru("python python.py");
?>

在python.py中:

import httplib
conn = httplib.HTTPSConnection('127.0.0.1');
url = "example.com"
conn.request("GET", url)
content = conn.getresponse()
print content.read()
conn.close()

答案 2 :(得分:0)

如果您打算分叉另一个进程,只需使用“--resolve”选项对另一个脚本进行自我卷曲。