質問: file_get_contents($url, false, stream_context_create($options)); echo $contents; ``` 上記のPHPでとあるサイトへ自動ログインする処理を作りました。 最初の数回は無事ログインでき、ログイン後のhtmlが$contentsに返ってきましたが、その後はログイン後のhtmlが取得できなくなりました。 ($homepageにはログイン画面のhtmlが問題なく取得できており、またPOSTする各要素も問題ないことを確認しています) この場合、どのような原因が考えられるでしょうか? よろしくお願い致します。 追記: ご指摘ありがとうございます。その後の調べた状況ですが、 「さくらインターネット」上では最初の数回成功した後は、ずっと失敗(ログイン後のhtmlが取得できない)が続いています。 また、別の環境でも試しているのですが、こちらは成功したり失敗したりという状況ですので、「実行しているサーバ環境」と「ログインしたいサービス側のサーバの状況(重さ?)」の問題ではないか...と推測しています。 以上、現状報告です。
回答: > > 「取得できる/できない」ですが、ログイン後の画面のhtmlを「取得できる」状態を成功、そのhtmlが返ってこない状態(null?空文字?)を「取得できない」=失敗と表現していました。 > > > 以下のように`ignore_errors`を追加してください。 file_get_contents()でURLにアクセスした際、httpステータスが200以外の場合もコンテンツを取得するようになります。(「取得できない」=失敗 の原因がわかります。) ``` $options = array('http' => array( 'method' => 'POST', 'content' => http_build_query($data), 'header' => implode("\r\n", $headers), 'ignore_errors' => true, )); ```