我在下面的这段代码可以在我的远程托管服务器上正常工作,但由于某些原因在我的本地linux机器上工作。 我也尝试过使用file_get_contents获取restful服务,但它也返回false。

有谁知道为什么会这样?

谢谢 :)

$xml_data = simplexml_load_file("****");

if ($xml == FALSE)
{
  echo "Failed loading XML\n";

  foreach (libxml_get_errors() as $error) 
  {
    echo "\t", $error->message;
  }   
} 

#1楼 票数:10

您收到此错误,因为您的服务器上已禁用远程文件访问。 另一种方法是使用CURL。

使用下面的代码来使用CURL:

function produce_XML_object_tree($raw_XML) {
    libxml_use_internal_errors(true);
    try {
        $xmlTree = new SimpleXMLElement($raw_XML);
    } catch (Exception $e) {
        // Something went wrong.
        $error_message = 'SimpleXMLElement threw an exception.';
        foreach(libxml_get_errors() as $error_line) {
            $error_message .= "\t" . $error_line->message;
        }
        trigger_error($error_message);
        return false;
    }
    return $xmlTree;
}

$xml_feed_url = '******';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $xml_feed_url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml = curl_exec($ch);
curl_close($ch);

$cont = produce_XML_object_tree($xml);

现在使用$cont作为对象来访问xml中的不同节点。

#2楼 票数:5

确保在php.ini打开allow_url_fopen

http://php.net/manual/filesystem.configuration.php

#3楼 票数:3

我有同样的问题,虽然我会发布这个来帮助那些可能还没有尝试过这个解决方案的人。

我有一个PHP脚本在本地运行良好,但在运行plesk的客户端服务器上使用它时,它不会工作,并在尝试获取外部xml文件时失败。

我试图从PHP脚本引用外部xml文件。 我使用的服务器正在运行plesk。 在考虑更改主机之前,我只是更新了服务器上的PHP设置,以作为Apache模块而不是FastCGI运行。

我收到的错误消息(示例):

警告:simplexml_load_file(url)[function.simplexml-load-file]:无法打开流:权限被拒绝

这解决了我的问题。

我在PHP脚本中使用了以下报告设置:

assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
assert_options(ASSERT_QUIET_EVAL, 1);
error_reporting(E_ALL);
ini_set('display_errors', 1);

#4楼 票数:1

更改: if ($xml == FALSE) if ($xml === FALSE)source )。

#5楼 票数:1

像这样用

$xml = simplexml_load_file('http://localhost/test/123.xml');

foreach ($xml->children() as $child) {
    $remoteCount[$child->getName()] = $child;

}
var_dump($remoteCount);

#6楼 票数:0

我有同样的问题,它只是simplexml中一个愚蠢的未声明的点

xml文件格式应该有一个容器标记,因此,您只需要放置一个包含所有数据的父标记,如下所示:

<?xml version="1.0">
<data>
    ...all your file content here...
</data>

  ask by Mark translate from so

未解决问题?本站智能推荐:

1回复

我应该使用带有simplexml_load_file和file_get_contents的代理吗?

我正在使用simplexml_load_file一段时间从多个网站获取RSS。 有时我从其中一些网站中收到错误,并且大约5天后,我在2个特定网站中出现了错误。 这是来自simplexml_load_file的错误: 这是file_get_contents中的错误: 这
1回复

simplexml_load_file,curl和file_get_contents在服务器上不起作用

所以我有一个使我疯狂的问题:(当我在本地计算机上使用simplexml_load_file,curl或file_get时 ,它可以正常工作,但是当我在服务器上移动时,它无法工作,并且出现超时错误, 这是我的简单代码: 所以,如果有人有任何想法,请给我感激:)
2回复

RSS不会在PHP中解析(尝试过file_get_contents,curl和simplexml_load_file)[重复]

这个问题已经在这里有了答案: PHP file_get_contents()和设置请求标头 7个答案 我现在完全迷路了,这是URL示例: 当然,这对于任何其他url都可以正常工作……但是,尽管它在浏览器中加载得很好,但它对于file_get_contents
1回复

simplexml_load_file不能正常工作

我有一个大的xml文件(60Mb),我想解析该文件并将其插入MySQL DB中。 我正在使用simpleXML这样做,并且在Xamp中像超级魅力一样工作,但是不在实时托管网站上使用。 我没有收到任何错误,所以我不知道为什么$ xml对象总是返回false。 是否由于XML中的大量记录?
2回复

无论如何,有没有可以使simpleXML在Web主机上工作的

我使用此代码来获取推文,它在localhost上成功运行,但在我的Webhost上却无法正常工作,我在两个webhosting服务上尝试了此脚本。 我注意到的问题是,诸如file_get_contents(),simplexml_load_file()之类的功能无法从存储在另一台服务器上
5回复

PHP在同一台服务器上使用simplexml_load_file吗?

我正在一个高流量的站点上工作,该站点解析XML文件以向用户显示页面。 我正在通过尽可能优化现有代码,gzip,缓存控制等等的过程。我想我可能会使用simplexml_load_file对服务器施加不必要的压力。 用户在域(http://xml.domain.com/)上加载页面,并从同一
1回复

simplexml_load_file刚停止工作

我在网站上看了一个博客,用这样的话...... 其中$ page = index,所以从中读取 这在我的本地主机上工作正常,并且曾经在我的实际网站上工作,直到今天,当我开始收到这些错误时...... Strangley,它仍然可以在我的localhost中正常工作
1回复

关于simpleXML_load_file

我是新的PHP开发人员,我有一个问题要问您。 我尝试这样做: 拿走票! 你能帮助我吗? 我使用PHP 5.4.7