
PHP5においてsimplexml_load_fileを使って、様々なサイトのRSS(XML)を読み込もうとしています。
一部のサイトに対してFalseが返ってきます。いまいちコンディションが掴みきれておらず
うまくいくことうまくいかないことを記述させていただきます。
PHP設置環境の種類
ローカルサイト上のLinux、レンタルサーバA、レンタルサーバB、レンタルサーバC
ターゲットRSS
NHK http://www3.nhk.or.jp/rss/news/cat0.xml
はてな http://feeds.feedburner.com/hatena/b/hotentry
毎日新聞 http://mainichi.jp/rss/etc/flash.rss
問題となるのは毎日新聞です。環境によって読めたり読めなかったりします。
ローカルでの結果 NHK、はてな、毎日新聞 いずれもOK
レンタルサーバA 毎日だけNG
レンタルサーバB すべてOK
レンタルサーバC 毎日だけNG
今回はこのサーバAやCの問題をクリアしたいのですが方法がわかりません。
simplexml_load_fileがNHKやはてなに対して動作するのに毎日に対してのみ動かないという
観点からすると毎日側の仕様の影響かとも思うのですが、
PHPの設置環境によって動作が変わるという観点も加味すると
PHPの設置環境の何かに依存し、読み込み対象が絞られる、というようなイメージを持っています。
いずれも無料サーバということもあり、検討ぐらいつけてから管理人に相談させていただくのが
良いかと思いこの場をお借りしております。
なお、レンタルサーバCは.land.toです。
よろしくお願いいたします。
エラー文
$data = simplexml_load_file($rss);
if ($data == FALSE){
echo "Failed loading XML<br>\n";
foreach(libxml_get_errors() as $error) {echo "\t", $simplexml_load_fileerror->message;}//Failed loading XML was the returned error
}
Warning: simplexml_load_file(http://rss.yomiuri.co.jp) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /home/httpd/****/public_html/php/rss.php on line 9
Failed loading XML
failed to load external entity "http://rss.yomiuri.co.jp"
なお、rss.phpのline 9は $data = simplexml_load_file($rss);です。
No.3ベストアンサー
- 回答日時:
ANo.2です
>取り回しが楽なのでsimplexml_load_fileがよいので
file_get_contentsとsimplexml_load_stringを組み合わせて使えば「どちらでエラーになるのか」で、そもそも読めない状態なのか読み込んだデータ形式がおかしいのかの判断は出来ると思います。当面はそうやって問題の切り分けを行ってみてはどうでしょう。
ありがとうございます。
ご指摘の通り、試したところ、うまく読み込めてしまいました。
以下のコードを並べて記述してみましたがsimplexml_load_fileではやはり何も出力されなかったので何らかのsimplexml_load_fileの仕様が毎日新聞のRSS と影響しているようでした。
$source = file_get_contents('http://mainichi.jp/rss/etc/flash.rss');
$data = simplexml_load_string($source);
#表示される
$rss = "http://mainichi.jp/rss/etc/flash.rss";
$data = simplexml_load_file($rss);
#表示されない
いずれにせよ、ひとまずこれで乗り切ろうかと思います。
ありがとうございます。
No.2
- 回答日時:
#可能であれば各サーバのphpのバージョンを
#併記していただくとありがたいのですが(汗
simplexml_load_fileでなく、fileやfile_get_contentsだと取得出来ますか?simplexml_load_file自体はバージョンによってさほどの違いがなかったように記憶していますので、そもそも当該サーバ(のIPアドレス)からのアクセス自体が制限されている可能性が否定出来ません。
この回答への補足
ありがとうございます。数日おいたところ何も変えないままちょっと現在動作してしまっているのでまたご報告しますがひとまずバージョンについて一応記載します。
サーバA PHP Version 5.3.3
ローカル PHP Version 5.3.3
サーバB PHP Version 5.2.17
サーバC PHP Version 5.2.11
何度もすみません。
動作確認でサーバAを試したところサーバAをのみやはり毎日新聞のRSS(http://mainichi.jp/rss/etc/flash.rss)のみ出力されませんでした。
ご指摘いただいたとおりfile_get_contentsを試したところ、毎日新聞のRSSを取得することができてしまいました。取り回しが楽なのでsimplexml_load_fileがよいので
どうもサーバAと毎日新聞、simplexml_load_fileの3つの組み合わせがキーのようですが他のRSSも読み込んでより切り分けを進めてみたいと思います。
No.1
- 回答日時:
読売新聞だと、403になりますね。
毎日新聞のだとどうなるかを補足したら回答が得られやすいかも。> Warning: simplexml_load_file(http://rss.yomiuri.co.jp)
この回答への補足
ご指摘ありがとうございます。
誤記しておりました。http://rss.yomiuri.co.jp/rss/yol/topstories改めてアクセスしてみたところRSSが表示されました。
またRSSページを直接開いた時に以前は直接XMLが開けなかったので何らかの仕様が変わった可能性があります。
もうちょっと動作確認の後お礼とさせてください
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- Windows 10 VirtualBox 7のゲストOSでの物理HDDパーティションのマウント方法 2 2023/05/04 13:01
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- サーバー Laravelをレンタルサーバーにインストールするにはどうすればいいですか? 2 2022/06/29 10:17
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- サーバー FTPサーバについて詳しい方(アクセス権のないディレクトリを非表示にする方法) 4 2022/08/22 22:33
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
csvのデータをphpで表示する方...
-
ネットワークの指定は?
-
日本語のデータが文字化けをし...
-
$_SESSION 有効期限をブラウザ...
-
Makefile.inとMakefile.am
-
リンクされているかの確認
-
wordpressの記事をカスタマイズ...
-
OOPの実践の入門に良いサイトは...
-
GETの値について
-
インタフェースとは
-
PHPをインストールしてみた...
-
PHPで特定のURLにジャンプす...
-
ファイルが開けない問題について
-
PHPを使ったリダイレクトを教え...
-
PHP で各種設定ファイルをイン...
-
PHPのif文でその処理を途中で抜...
-
php5のフォーム
-
OKwebと教えてgooとは同じ?
-
.htaccessについて
-
アプリケーション・ディレクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPでの別のサーバーのテキスト...
-
2つの画像ファイルが異なるファ...
-
register_globalsについて
-
shift-jisでfgetcsv
-
phpのftp_get()でエラーが出ます。
-
PHPでFilename cannot be empty...
-
独自INIファイルの操作をしたい...
-
ファイルの行数取得
-
XMLのロードに失敗する
-
別のサーバにあるファイルの存...
-
ファイル指定
-
ファイルについて・・・。
-
画像ファイルの添付
-
Zend Framework で大きなファイ...
-
stdinからの処理でメール情報を...
-
AS3外部テキスト読み込み
-
PHPでAPI 出力はCSVを取得する...
-
ファイル名は、数字の「0」(...
-
PHPでテキストファイルかどうか...
-
ファイルの内容の削除【ファイ...
おすすめ情報