9

curl --resolve ....PHP CURL ライブラリに相当するものはありますか?

背景: ラウンド ロビン DNS (1 つのドメイン名が複数の IP に解決される) を使用しており、特定のホストに要求を送信したいと考えています。Apache の名前ベースの仮想ホストを使用しているため、正しいドメイン名が HTTP 要求に表示される必要があります。

リクエスト URL: で 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は便利なオプションではありません。

4

3 に答える 3

16

まず、curl オプションが libcurl (または PHP/CURL) にどのように変換されるかを知る最善の方法は、 --libcurl オプションを使用することです

そうすれば、PHP 5.5.0 以降でサポートされている libcurl で--resolveがCURLOPT_RESOLVEに変換されることがわかります。7.21.3以降の libcurl でサポートされています。

于 2012-05-03T20:28:53.360 に答える
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()
于 2013-09-27T06:37:26.060 に答える
0

わざわざ別のプロセスを fork するつもりなら、「--resolve」オプションを使用して curl 自体を fork するだけで、さらに別のスクリプトを実行できます。

于 2014-04-04T18:53:13.233 に答える