2017-03-20 8 views
0

RSS 피드의 URL이 제공되면 링크 된 목록을 반환하는 스크립트가 있습니다. PHP 5.2를 실행하는 서버에 있습니다. 이 스크립트는 내가 제공 한 다른 RSS 피드와 잘 작동하지만 다음 URL에서 작동하지 않습니다..csp 파일에서 RSS에 대해 simplexml_load_string이 작동하지 않습니다. (PHP 5.2)

는 URL : https://www.nwp.org/rss.csp

<?php 

//SETUP THE VARIABLES 
if(!strlen($RSSFEED_URL)) { $RSSFEED_URL = $_GET['url']; } 
if(!strlen($RSSFEED_LIMIT)) { $RSSFEED_LIMIT = abs($_GET['limit']); } 
if(!strlen($RSSFEED_EXCERPT)) { $RSSFEED_EXCERPT = abs($_GET['excerpt']); } 
if(!strlen($RSSFEED_DATE)) { $RSSFEED_DATE = abs($_GET['date']); } 
if(!strlen($RSSFEED_LINK)) { $RSSFEED_LINK = $_GET['link']; } 

//SET DEFAULTS 
if($RSSFEED_LIMIT > 15 || !strlen($_GET['limit'])) { $RSSFEED_LIMIT = 5; } 
if($RSSFEED_EXCERPT !== 0)    { $RSSFEED_EXCERPT = 1; } 
if($RSSFEED_DATE !== 0)    { $RSSFEED_DATE = 1; } 

//CONNECT THE FEED 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_TIMEOUT, .6); 
curl_setopt($ch, CURLOPT_URL, $RSSFEED_URL); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_HEADER, false); 
$RSSFEED_CONTENTS = curl_exec($ch); 
$RSSFEED_CONTENTS = preg_replace('/&(?![A-Za-z0-9#]{1,7};)/','&amp;',$RSSFEED_CONTENTS); 

curl_close($ch); 

if($RSSFEED_CONTENTS){ 

    $RSSFEED = simplexml_load_string($RSSFEED_CONTENTS); 
    if(!strlen($RSSFEED_LINK)) { $RSSFEED_LINK = $RSSFEED->channel->link; } 

     if(sizeof($RSSFEED->channel->item) < $RSSFEED_LIMIT){ $RSSFEED_LIMIT = sizeof($RSSFEED->channel->item); } 

    for($i = 0; $i < $RSSFEED_LIMIT; $i++){ 
     echo ' 
<p> 
    <a href="'. $RSSFEED->channel->item[$i]->link .'">'. $RSSFEED->channel->item[$i]->title .'</a>'; 
     if($RSSFEED_EXCERPT){ 
      echo ' 
    <br />' . $RSSFEED->channel->item[$i]->description; 
     } 
     if($RSSFEED_DATE){ 
      echo ' 
    <br />' . date("F j h:ia", strtotime($RSSFEED->channel->item[$i]->pubDate)); 
     } 
     echo ' 
</p>'; 
    } 
    echo ' 
<p class="last" align=right> 
    <span class="more"> 
     <a href="'. $RSSFEED_LINK .'">Read More &#8250;</a> 
    </p>'; 
} 

else{ 
    echo ' 
    <p>RSS Feed Unavailable.</p>'; 
} 

?> 

답변

0

좋아, curl_error 덕분에 그것을 알아 냈다(). https가 문제의 원인 인 것 같습니다. 그래서 다음을 전송 설정에 추가했습니다 :

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

이것은 피어의 인증서를 확인하지 못하도록하는 curl 명령을 알려줍니다.