simplexml_load_file()错误

4

我对PHP和XML都比较陌生。

在我的本地主机上,我的脚本可以完美运行。但当我尝试将其放到服务器上时,却出现了以下错误信息:

警告:simplexml_load_file() [function.simplexml-load-file]: http://api.wefeelfine.org:8080/ShowFeelings?display=xml&feeling=happy&returnfields=imageid,feeling,sentence,posttime,postdate,posturl,gender,country,state,city,lat,lon&limit=0&extraimages=20:1

解析器错误:文件为空 /home2/alsweet/public_html/notalone.php 的第21行

出问题的代码行为:

// get api feed
$xml = simplexml_load_file('http://api.wefeelfine.org:8080/ShowFeelings?display=xml&feeling=' . $feeling . '&returnfields=imageid,feeling,sentence,posttime,postdate,posturl,gender,country,state,city,lat,lon&limit=0&extraimages=20');

我犯了错误吗?我应该联系我的托管提供商吗?
3个回答

1

使用您在XML加载器中的URL,我得到:

<?xml version="1.0"?> 
<feelings>
</feelings>

所以它应该可以正常解析。请与您的托管提供商确认是否支持simplexml_load_file。


我认为那不是他实际使用的URL,而只是错误输出。请注意,他的源代码中没有“:1”。 - KTastrophy
@KThompson 没错,我没有滚动查看那个。但是当我使用他的URL时,我得到了一个空集合。 - wajiw
我实际上使用“feeling=happy”返回了多个元素。simplexml似乎有效,因为错误只指示URL中的错误,而不是函数不存在之类的错误。 - KTastrophy
好的,你的主机应该支持它。你知道你的服务器上安装了哪个版本的PHP吗? - wajiw
根据phpinfo()显示,PHP版本为5.2.13。 - alsweet
是的,我认为它应该可以正常工作。作为最后的努力,您始终可以使用curl获取xml,并使用SimpleXMLElement或simplexml_load_string进行转换。 - wajiw

0

事实上,这是我托管方面的问题,

结果发现是因为我试图调用另一个服务器上的8080端口,而该端口在防火墙中未开放出站。所以他们打开了它,现在一切正常。

非常感谢您的帮助!


0

尝试隔离那一行代码,看看问题是否确实来自那里。将此代码在单独的文件中运行,看看是否有效。

<?php
$xml = simplexml_load_file('http://api.wefeelfine.org:8080/ShowFeelings?display=xml&feeling=happy&returnfields=imageid,feeling,sentence,posttime,postdate,posturl,gender,country,state,city,lat,lon&limit=0&extraimages=20');

print_r($xml);

?>

这是一个不错的解决问题的方法。但这应该是一条注释 :P ;) - Nirav Zaveri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接