• 締切済み

file_get_contentsについて

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の使い方が変わるのでしょうか。 ご存知の方がいらっしゃれば是非教えてください。 よろしくお願いします。

みんなの回答

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

単にそのページが取得できないだけと思いますが.. ブラウザからアクセスすれば表示されますか? 環境変数が足りないとかは?

ten_oh
質問者

お礼

ご回答ありがとうございます。 ブラウザからのアクセスや環境変数も 問題なかったのですが、うまくいかず 別の方法にて目的を達成しました。 ini_set( 'user_agent', 'User-Agent :' . $userAgent . PHP_EOL . 'x-up-subno :' . $subNo ); 上記の用にini_set()関数にてヘッダ情報を付加した 状態でfile_get_contents()を使用したら 無事にサイトの情報が取得できました。

関連するQ&A