2011-11-13 118 views
0

當我運行這段代碼:解析RSS訂閱用SimpleXML

<?php 
$rss = simplexml_load_file('http://stackoverflow.com/feeds'); 
?> 
<h1><?php echo $rss->title; ?></h1> 
<ul> 
<?php 
foreach($rss->entry as $e) { 
    echo "<li><a href=\"".$e->link['href']."\">"; 
    echo $e->title;  
    echo "</a></li>\n"; 
}  
?> 
</ul> 

它產生以下錯誤:

Warning: simplexml_load_file(http://stackoverflow.com/feeds) [function.simplexml-load-file]: failed to open stream: Permission denied in /home/www/cheapflightshunt.co.uk/aaaa.php on line 2 

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://stackoverflow.com/feeds" in /home/www/cheapflightshunt.co.uk/aaaa.php on line 2 

Warning: Invalid argument supplied for foreach() in /home/www/cheapflightshunt.co.uk/aaaa.php on line 7 

我的共享主機與PHP5.2.17運行

請提供解決方案。

在此先感謝。

+0

您可以提供的phpinfo()輸出,爲人們進一步瞭解。可能的原因可能是1)allow_url_fopen()關閉2)PHP4不支持SimpleXML –

回答

1

您的代碼完美無缺。我懷疑你目前的設置不是allow fopen over url

試着檢查一下。

如果你不能改變的設置,儘量捲曲,而是:

<?php 
$ch = curl_init('http://stackoverflow.com/feeds'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$data = curl_exec($ch); 
curl_close($ch); 
$rss = new SimpleXMLElement($data); 
?> 
<h1><?php echo $rss->title; ?></h1> 
<ul> 
<?php 
foreach($rss->entry as $e) { 
    echo "<li><a href=\"".$e->link['href']."\">"; 
    echo $e->title;  
    echo "</a></li>\n"; 
}  
?> 
</ul> 
+0

謝謝@Repox但它仍然無法正常工作。我知道腳本沒有問題,但需要在託管時進行一些設置。我檢查了** allow_url_fopen **&** allow_url_include **都設置爲開啓。 ** CURL **也被啓用,並且您的代碼正在生成此錯誤:'致命錯誤:在/home/www/cheapflightshunt.co.uk/aaaa中帶有消息'字符串不能被解析爲XML'的未捕獲異常'異常'。 php:6堆棧跟蹤:#0 /home/www/cheapflightshunt.co.uk/aaaa.php(6):SimpleXMLElement - > __ construct('')#1 {main}拋入/home/www/cheapflightshunt.co。 uk/aaaa.php第6行' – Faisal

+1

必須有一些你沒有告訴我們的東西,因爲代碼工作正常 - 我認爲這是您在發佈之前修改問題的RSS源的URL。 – Repox