繁体   English   中英

simplexml_load_file 不工作

[英]simplexml_load_file not working

我有下面这段代码,它在我的远程托管服务器上运行良好,但由于某种原因在我的本地 linux 机器上运行不正常。 我也尝试使用 file_get_contents 来获得宁静的服务,但它也返回 false。

有谁知道为什么会这样?

谢谢:)

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

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

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

您收到此错误是因为您的服务器上已禁用远程文件访问。 另一种方法是使用 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作为 object 来访问 xml 中的不同节点。

确保在php.ini中打开了allow_url_fopen

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

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

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

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

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

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

这解决了我的问题。

我在 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);

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

像这样使用

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

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

}
var_dump($remoteCount);

我遇到了同样的问题,这只是simplexml中一个愚蠢的未声明点

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

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

在我的例子中,它缺少 XML php 库,重新安装它并且工作正常

https://wpml.org/forums/topic/fatal-error-uncaught-error-call-to-undefined-function-simplexml_load_file-3/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM