自分のサーバーで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の場合は自動でやってくれるので、エンコードの必要はありません。
2009-10-29