- 締切済み
クロールしたときのエラー対処について
これまで同じプログラムで稼動していたのに、つい最近動かしたら下記エラーが出てしまいました、、 Warning: fopen(http://www.AAA.jp/ここはパラメータが入ってます。) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in C:\xampp\htdocs\phpget\get2.php on line 4 line 4 に記述されているもの ↓ function getURL( $pURL ) { $_data = null; if( $_http = fopen( $pURL, "r" ) ) { ←ここが4行目 while( !feof( $_http ) ) { $_data .= fgets( $_http, 1024 ); } fclose( $_http ); } return( $_data ); } これは、クロール先のサーバ側が何らかの設定変更によるものでしょうか? こちらで対処できる方法があれば教えていただきたく よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
PHPのサーバーからアクセスできているのかまずチェック ポート80経由でtelnetするなりwgetなりで接続チェックしてみてください 単純に外のサーバーを見にいけないだけならyahooあたりに接続チェック するだけでも切り分けになります。 また接続が確保されているとして クロール相手のサーバーがブラウザを見て挙動を変えているのであれば ユーザーエージェントなどでブラウザの偽装ヘッダーを 流してみてはどうでしょう?
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
http://ja.wikipedia.org/wiki/HTTP%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89#5xx_Server_Error_.E3.82.B5.E3.83.BC.E3.83.90.E3.82.A8.E3.83.A9.E3.83.BC あっち側のサーバ問題のようですが、接続先がブラウザなどでもちゃんと 確認できるか見た方が早くないですか?
補足
ご指摘ありがとうございます。 IEやFFのブラウザで表示は正しくされてます。 phpのプログラム経由でアクセスすると このエラーになってしまう状況です。 以前、正しく稼動したURL先を久々にアクセスしたら このようなエラーになってしまった。。という状況です。。
補足
yahooに接続してページ取得できたことは確認できました。 偽装ヘッダーは実装してなかったですね。。。 また調べてみます。 ご指摘ありがとうございます。