自分のサーバーでHTTP Requestする場合に注意すること
あなたが開発しているサーバー内のプログラムから、再度自分のサーバー内へ向かってHTTPリクエストを出す場合にエラーが出ないように注意することをまとめてみました。
PHPではallow_url_fopenをOnにしておく
これはPHPのプログラム内でfopen()やfile_get_contents()メソッドなどを利用する際にphp.iniで設定しておく項目です。 これをやっておかないと、HTTPリクエストでHTTPプロトコル(http://~)を利用することができません。
# vi /etc/php.ini ------------------------------------------------ allow_url_fopen = On ------------------------------------------------
自分のサーバーに向けて行う場合はhostsファイルの確認を
これはあまり行う機会がないかもしれませんが、例えば自社でWebAPIなどを開発した際に、それを自身のサーバーで呼び出してみたいといったシチュエーションが考えられます。
この場合「/etc/hosts」ファイルが以下のようになっていると、file_get_contents()やPEAR::HTTP_RequestのsendRequest()といったメソッド実行時に失敗します。
127.0.0.1 www.example.com www localhost localhost.localdomain
これを回避するには、以下のようにドメイン名に正式にDNSで割り当てられているIPアドレスを指定します。
127.0.0.1 localhost.localdomain localhost 192.168.11.5 www.example.com
PHPのfile_get_contents()ではURLのエンコードを
file_get_contents()を利用してHTTPリクエストする際、URLに日本語が含まれている場合はurlencode()を使って日本語文字をエンコードする必要があります。
$url = "http://www.example.com/api/&keyword=".urlencode($keyword);
ちなみに、PEAR::HTTP_Requestの場合は自動でやってくれるので、エンコードの必要はありません。
サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)
できるPRO Apache Webサーバー 改訂版 Version 2.4/2.2/2.0対応 できるPROシリーズ
¥1,886 (2025-04-17 13:37 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)2009-10-29