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
文件不是一个方便的选择。
答案 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”选项对另一个脚本进行自我卷曲。