当我安全地浏览与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);
这是否常见?还有什么可以解决的吗?如果您需要更多信息来帮我解决这个问题,请告诉我,我会提供。
感谢。
答案 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_file
与https
网址一起使用也对我有用。这只是另一种选择。
答案 1 :(得分:0)
我想出了自己的问题,但感谢那些试图帮助我的人。我很感激。
我的解决方案:
这是在WordPress中运行的,所以我真的应该在WPSE网站上发布这个,但是如果他们不这样做,我不会责怪任何人不知道WP这个网站的所有内容。
函数plugins_url()
不应该用于定义XML文件的路径,我本应该使用dirname(__FILE__).'/settings.xml'
- 如果你知道如何{{1}这很明显的原因工作,我完全忽略了它,但最终解决了我的问题。