file_get_contentsが動かない!?

この記事はだいぶ前に書かれたものなので情報が古いかもしれません
みたいなこと、ありますか? 僕はありました。

$flg = file_get_contents('http://norm-nois.com');
var_dump($flg);

通常、こんな感じで特定のページを読み込むとき、読み込みに失敗したらFALSEが返って来るのですが、それすらもない。なかったと思う。もしかしたら僕が見逃していただけかもしれないし、var_dumpのスペルを間違えていたかもしれない。

とにかく動いていない。

さてどうしたものか。これではページが読み込めない。何の処理もできへん。



phpinfo()の力を使え

こんなときは、サーバーの状態を確認してみると良いです。サーバーの情報っていうか、phpの設定情報ですかね。その辺の細かい言い回しはよく分かりません。

実際にphpinfo()を使って情報を見てみると、こんなパラメータがあると思います。

allow_url_fopen

これがもしOFFになっていると、どうやらfile_get_contents()などは動作してくれないようです。まあ読んで字のごとく、ファイルオープン系の関数でurlをセットするのを許可するとかそんな感じの設定項目っぽいですもんね。それがOFFならなるほど、許可されてないってことになるわけだ。

マニュアルを見る限り、このallow_url_fopenってのはPHP_INI_SYSTEMってやつらしいので、早い話がini_set()とかで変更することができません。php.iniとかを書き換えてapacheを再起動するしかないみたいですね。

もしphp.iniとかを書き換える権限がないときは……とりあえず、あきらめるのが良いんじゃないっすかね。



ソケット通信をさせる手はある

上記のようにfile_get_contents()が動かないような状況では、代わりにfsockopen()って関数でソケットを開いて通信するやり方があります。

ソケット通信って自分はほとんどやったことないんで、その辺は調べてもらうのが吉かと……。

マニュアルもありますので。




まあ、たいしたことではないんですけどね。でも知らないと、何で動かないのかな~、コード上のどっかにバグが出てんのかな~っていう疑問がなかなか解決しないままに時間だけが過ぎて行っちゃったりしますからね。僕みたいに。

あれ、何で動かへんのんって思った方は、一応調べてみる価値はあるっすよ。すぐに調べられる部分だからね。
 もしかしたら何か関連しているかも? 
 みんなからのコメント 
2013年09月14日 13:08:51
[...] file_get_contentsが動かない!? | 日記の間 | あかつきのお宿 [...]