PHPにてhosts設定を行った上で他サイト・サーバにアクセスする方法
2023/08/12
開発中の案件だとhosts設定を行ってサーバにアクセスする、ということがある。作業用PC→開発用サーバ間のアクセスだと普通にwindowsのhostsファイルを書き換えれば良いが、別サーバ→開発用サーバ間のアクセス(file_get_contentsとかcurlでのアクセス)が必要になり困った。以下に対応方法をメモ。
対応方法
cURLのCURLOPT_RESOLVEを使用する
<?php
$data = [];
$ch = curl_init();
$hosts_opt = array(
'hoge.com:443:111.222.333.444', //接続先のドメイン:ポート番号:IPアドレスの順に記述する
'www.hoge.com:443:111.222.333.444',
);
curl_setopt($ch, CURLOPT_RESOLVE, $hosts_opt);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_URL, 'https://hoge.com/hogehoge.php');
$response = curl_exec($ch);
CURLOPT_RESOLVEについてはリファレンスを参照。
注意点
コメントにも書いたがhosts設定部分は「接続先のドメイン:ポート番号:IPアドレス」の順に設定する。また、ポート番号はhttp接続の場合は80、https接続の場合は443になるので注意すること。
所感
とりあえず解決したのは良いものの本番環境実装時はhosts設定を外す必要が出てくると思われ、そうなると本番用のコードも必要になってきそうでちょっと難儀かも。本番orテスト環境フラグを用意しておいて分岐させるような形で書いた方が無難かもしれない。
参考サイト
関連記事
-
-
PHPのテンプレートエンジン「Twig」の使い方について簡易メモ
開発中の案件でテンプレートエンジンのTwigを利用する機会があった。使ってみた感 ...
-
-
PHPのdefine()で配列データの定義と利用方法について
他社が作成したPHPのソースコードを拝見した際に定数で配列が定義されていた。配列 ...
-
-
PHPで画像を比較して類似度を算出する「image-comparator」ライブラリの利用方法
PHPで画像の類似度を計測したい。ただ、そのためのロジックが全く分からないためラ ...
-
-
PHPでソーシャル(SNS)ログインする方法2018
久しぶりにソーシャル(SNS)ログインを実装する機会があった。以前に対応方法を書 ...
-
-
PHP / MySQLで2038年問題の対策
先日打ち合わせの際に「タイムスタンプを使ってユニークキーに云々~~」といったよう ...