プロが教える店舗&オフィスのセキュリティ対策術

file_get_contentsについて教えてください。

現在あるサイトを定期的にチェックし、特定の文字列が存在したら
メールを送るというものを作っています。
そのサイトチェックの際にfile_get_contentsを使って、
サイトの中身をチェックしています。

$tmpPage = file_get_contents('~.cgi?aa=bbb');

上記の用に記述して$tmpPage内の文字列をチェックすることで
実現できているのですが、本来このサイトは携帯向けのページのため
ヘッダー情報を付加して下記のように記述しています。

$opts = array(
'http'=>array(
'method'=>'GET',
'header'=>'Host :www.XXXXX.jp' . PHP_EOL .
'User-Agent :KDDI-XXXXXXXXXXXX' . PHP_EOL .
'x-up-subno :XXXXXXXXXXXX.ezweb.ne.jp'
)
);
$context = stream_context_create( $opts );
$tmpPage = file_get_contents( '~.cgi?aa=bbb', false, $context );

このように記述すると
Warning: file_get_contents('~.cgi?aa=bbb') [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
とエラーが返ってきてしまいます。

アクセスするURLをYahooやGoogleにすると問題なく動いているので、
問題なのはチェックするサイトのURLが「XXX.cgi?aa=bbb」と
なっているのがダメなのではないかと思っています。

アクセス先のURLが単純な「.html」ではないまたは、ヘッダー情報を
付加する場合、file_get_contentsの使い方が変わるのでしょうか。
ご存知の方がいらっしゃれば是非教えてください。
よろしくお願いします。

A 回答 (1件)

単にそのページが取得できないだけと思いますが..


ブラウザからアクセスすれば表示されますか?
環境変数が足りないとかは?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ブラウザからのアクセスや環境変数も
問題なかったのですが、うまくいかず
別の方法にて目的を達成しました。

ini_set( 'user_agent', 'User-Agent :' . $userAgent . PHP_EOL . 'x-up-subno :' . $subNo );

上記の用にini_set()関数にてヘッダ情報を付加した
状態でfile_get_contents()を使用したら
無事にサイトの情報が取得できました。

お礼日時:2009/09/28 00:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!