PHP 5.3中的simplexml_load_file错误

Bre*_*ett 2 php simplexml

我正在使用以下代码来读取RSS源并输出结果.

function home_page_parser($feedURL) {
    $rss = simplexml_load_file($feedURL);
    $i = 0;

    echo  "<ul>";

    foreach ($rss->channel->item as $feedItem) {
        $i++;
        $myDate = ($feedItem->pubDate);
        $dateForm = explode(" ", $myDate);
        echo "<li class=\"rss-feed\"><a href=\"$feedItem->link\" title=\"$feedItem->title\" target=\"_blank\">".$feedItem->title."</a><br />" .$feedItem->pubDate. "</li>";

    if($i >= 3) break;

    echo "</ul>";
    }
}
Run Code Online (Sandbox Code Playgroud)

它在我的运行PHP 5.2的Rackspace Cloud测试站点上运行良好

在运行PHP 5.3的Media Temple的实际站点上,我收到以下错误:


警告:simplexml_load_file()[function.simplexml-load-file]:在第39行的/.../html/includes/functions.php中,allow_url_fopen = 0在服务器配置中禁用了http://包装器

警告:simplexml_load_file(http://www.chinaknowledge.com/Newswires/RSS_News/RSS_News.xml)[function.simplexml-load-file]:无法打开流:在第39行的/.../html/includes/functions.php中找不到合适的包装器

警告:simplexml_load_file()[function.simplexml-load-file]:I/O警告:未能"http://www.chinaknowledge.com/Newswires/RSS_News/RSS_News.xml"在第39行的/.../html/includes/functions.php中加载外部实体

警告:第44行的/.../html/includes/functions.php中为foreach()提供的参数无效


第39行是这样的:

$rss = simplexml_load_file($feedURL);
Run Code Online (Sandbox Code Playgroud)

我做错了什么或需要改变工作5.3?

shx*_*fee 5

这个错误非常具有描述性,你不觉得吗?

通过allow_url_fopen = 0在服务器配置中禁用http://包装器

您需要编辑PHP配置文件并更改配置allow_url_fopen.如果你不能直接这样做,请尝试ini_set()

编辑:正如@evanmcd在评论中指出的,这个配置只能在php.ini中设置.PHP文档参考.

  • allow_url_fopen不能通过ini_set()设置.请参阅http://stackoverflow.com/questions/1804010/how-can-i-set-variable-allow-url-fopen-in-htaccess-or-php-file (2认同)