| 
  
    | 投稿者 | メッセージ |  
    |  |  
    | <  各種配布ソフトウェア/スクリプト 質問・要望・不具合報告  ~  配布されている「外部RSSを読み込む」スクリプトでエラー |  
    |  | 
        
          |  時間:
            火 8月 28, 2007 6:35 pm |   |  |  
    |  | 
| 
| 外部RSSを表示させたいなと思いこちらで配布されているスクリプトを使わせていただこうと思ったのですが、実行してもエラーが出てしまいます。とりあえずスクリプトを実行させたいのですが、どうすればよいでしょうか? 
 もう少し詳しく説明させていただきます。
 こちらで配布されている、「外部RSSを読み込み」のスクリプトをそのまま使用すると
 
 Warning: fopen(http://www3.asahi.com/rss/index.rdf): failed to open stream: HTTP request failed!
 
 とURLを読み込む箇所でエラーが表示されます。何かインストール、もしくは設置する必要があるのでしょうか?それともこのサンプルソースは改変する必要があるのでしょうか?
 試しにこのスクリプトで使用されているURL以外のURLを用いてみても同じエラーが表示されました。現在使っているサーバーに何か問題があるのでしょうか?
 
 今回使用したソース(phpspot -> PHPサンプル集 -> XML関連 -> 外部RSSを読み込み)
 
 
   
	| Code: |  
	| <?php 
 // 外部RSSを簡単に読み込んで出力するル−チン
 $RSSURL = "http://www3.asahi.com/rss/index.rdf";
 
 $buff = "";
 $fp = fopen($RSSURL,"r");
 while ( !feof($fp) ) {
 $buff .= fgets($fp,4096);
 }
 fclose($fp);
 
 // パ−サ作成
 $parser = xml_parser_create();
 // パ−サオプションを指定
 xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
 // パ−ス実行、連想配列にパ−ス結果代入
 xml_parse_into_struct($parser,$buff,$values,$idx);
 // パ−サ開放
 xml_parser_free($parser);
 
 // パ−スして得た連想配列をまわす
 $in_item = 0;
 foreach ($values as $value) {
 $tag  = $value["tag"];
 $type = $value["type"];
 $value = $value["value"];
 
 $tag = strtolower($tag);
 if ($tag == "item" && $type == "open") {
 $in_item = 1;
 } else if ($tag == "item" && $type == "close") {
 echo <<<EOM
 $title<br>
 $link<br>
 $description<hr>
 EOM;        $in_item = 0;
 }
 if ($in_item) {
 switch ($tag) {
 case "title":
 // UTF-8なドキュメントの場合ここで
 // $value = mb_convert_encoding($value, "EUC-JP", "UTF-8"); などする必要あり
 $title = $value;
 break;
 case "link":
 $link = $value;
 break;
 case "description":
 // UTF-8なドキュメントの場合ここで
 // $value = mb_convert_encoding($value, "EUC-JP", "UTF-8"); などする必要あり
 $description = $value;
 break;
 }
 }
 }
 
 ?>
 |  
 動作環境
 Windows XP
 Apache/2.0.59
 PHP/4.3.2
 
 なお、こちらで配布されているスクリプトは
 
 
   
	| Code: |  
	| 33:        echo <<<EOM 37:EOM;        $in_item = 0;
 |  
 とEOMの前後にスペースが入ってしまっていたので
 
 
   
	| Code: |  
	| 33:echo <<<EOM 37:EOM;
 38:$in_item = 0;
 |  
 と書き換えました。
 
 また、URLで指定されているファイルを任意のディレクトリに保存し、そのファイルのパスを指定するとこのスクリプトは正しく実行されました。
 やはり外部ドメインのRSSのためにセキュリティ上の問題からエラーが発生しているのだと思われます。
 
 ひょっとしてここで仰られている「外部RSS」とは「外部ドメインのRSSデータ」という意味ではないのでしょうか?それとも何か他にするべきことが抜けているためにエラーが出てしまうのでしょうか。
 ご教授のほうよろしくお願いいたします。
 |  |  |  |  |  
    |  |  |  
    |  |  
    |  | 
        
          |  時間:
            木 8月 30, 2007 11:04 am |   |  |  
    |  |  |  
    |  |  |  
    |  |  
    |  | 
        
          |  時間:
            月 9月 03, 2007 12:47 pm |   |  |  
    |  | 
| 
| プロキシの設定をしたら解決しました。お騒がせいたしました。 |  |  |  |  |  
    |  |  |  
    |  |  
    |  |  
 
 
 
  
	| 
 
 | 新規投稿: 不可
 返信: 不可t
 自分の記事の編集: 不可
 自分の記事の削除: 不可
 投票への参加: 不可
 
 |  
 |