自分のサーバーで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