PHP: Hostを指定してcurlを実行する


ローカルで開発している場合に、ドメイン名をhostsに書いて特定のドメイン名でローカルホストに接続できるようにする。
/etc/hosts記述の例:

127.0.0.1 example.com

プログラム中でhttp接続する場合は、プログラムが動いているサーバの/etc/hostsを編集すれば、同じように特定のドメイン名で任意のIPアドレスのサーバに接続できる。


$curl = curl_init("http://exsample.com");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);

このプログラムはhostsにexample.comの記述があればhosts指定のIPに接続し、
記述がなければhttp://exsample.comに接続しする。

レンタルサーバなど/etc/hostsを触れない場合や、テストモード/本番モードで接続先を変更したいときは、curlのヘッダーにHostを指定することでhostsファイルに設定を書くのと同じように接続を分けることができる。

ホスト名exsample.comでhttp://127.0.0.1に接続するプログラム


$curl = curl_init("http://127.0.0.1");
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Host: exsample.com']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);

$mode=TEST ならば http://127.0.0.1 、そうでなければ exsample.com に接続するプログラム


if($mode == 'TEST'){
    $url = "http://127.0.0.1";
}
else{
    $url = "exsample.com";
}
$curl = curl_init("http://127.0.0.1");
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Host: exsample.com']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);