安全浏览时出现simplexml_load_file问题

时间:2011-07-10 00:56:36

标签: php xml simplexml

当我安全地浏览与simplexml_load_file函数有关的客户端站点时,我遇到了很多错误。这是一个例子:

Warning: simplexml_load_file() [function.simplexml-load-file]: https://xxxxxxxx/settings.xml:1: parser error : Document is empty in /xx/xx/xx/xx/xx/ on line 0

该网站位于SingleHop的专用服务器上。只有当我使用https://浏览网站时才会发生这种情况,并且在使用http://进行浏览时效果正常。

似乎也可以使用https://加载XML文件: https://consumerstrust.org/wp-content/plugins/easyfanpagedesign/framework/settings.xml

从类中解析XML:

public function efpd_load_settings($xmlfile){
    $xmlparse=simplexml_load_file($xmlfile);
    $settings=array();
    $setint=0;
    foreach($xmlparse->option as $xml){
        $option[$setint]=(array)$xml;
        array_push($settings,$option[$setint]);
        $setint++;
    }
    return $settings;
}

并且像这样跑:

$efpdxml=plugins_url('settings.xml',__FILE__); // plugins_url() is a WP function - returns the value just fine.
$efpdsettings=Efpd::efpd_load_settings($efpdxml);

这是否常见?还有什么可以解决的吗?如果您需要更多信息来帮我解决这个问题,请告诉我,我会提供。

感谢。

2 个答案:

答案 0 :(得分:0)

我刚刚确认file_get_contents工作正常。

    $content = file_get_contents("https://consumerstrust.org/wp-content/plugins/easyfanpagedesign/framework/settings.xml");
    if ( empty($content) ) {
        die('XML is empty');
    }
    $xml = simplexml_load_string($content);

修改

simplexml_load_filehttps网址一起使用也对我有用。这只是另一种选择。

答案 1 :(得分:0)

我想出了自己的问题,但感谢那些试图帮助我的人。我很感激。

我的解决方案:

这是在WordPress中运行的,所以我真的应该在WPSE网站上发布这个,但是如果他们不这样做,我不会责怪任何人不知道WP这个网站的所有内容。

函数plugins_url()不应该用于定义XML文件的路径,我本应该使用dirname(__FILE__).'/settings.xml' - 如果你知道如何{{1}这很明显的原因工作,我完全忽略了它,但最终解决了我的问题。