allow_url_fopen = 0如何检查错误是否有替代方案?

时间:2013-02-12 08:34:11

标签: php javascript xml-parsing

  

警告:simplexml_load_file()[function.simplexml-load-file]:http://   通过allow_url_fopen = 0在服务器配置中禁用包装器   在/home/vol6/byethost22.com

此主机(免费托管)已禁用此功能。所以我是在寻找一个付费选项(我认为它在那里找不到任何有关它的教导。无论如何,我接着教,这实际上会停止执行,如果整个脚本因为它以后我可以从中学习,更改我的代码为了更好地使用java脚本后备或其他东西。

  

致命错误:在

中的非对象上调用成员函数xpath()

所以这是我的代码:

} elseif ( $provider == 'vimeo' ) {
        $vimeo_hash = unserialize(file_get_contents('http://vimeo.com/api/v2/video/' . $id . '.php'));
        $thumbnail = $vimeo_hash[0]['thumbnail_medium'];
} elseif ( $provider == 'bliptv' ) {
        $blip_xml = simplexml_load_file("http://blip.tv/players/episode/$id?skin=rss");
        $blip_result = $blip_xml->xpath("/rss/channel/item/media:thumbnail/@url");
        $thumbnail = (string) $blip_result[0]['url'];

if ( $thumbnail ) {
    if ( ! list( $width_orig, $height_orig ) = getimagesize( $thumbnail ) ) {
        return "ERROR!";
    }

getimagesize()产生的错误就像第一次提到的那样

1

我是否正确地假设我无法使用其他许多php方法之一来执行此xml处理,因为它会全部失败?如果是的话,这会让我再问几个问题。

2

我知道我可以做一些事情,比如把这个东西放在像这样的if语句中但是我怎么能够检测到图像的id(如果)实际上是错误/没有引导还是函数本身不可能?

if ( $blip_xml = simplexml_load_file("http://blip.tv/players/episode/$id?skin=rss") ){
    [...]
}

第3

我认为上面的代码是有效的,但我讨厌它的外观。看起来我忘了使用双“==”并且只使用了一个。做这样的事情会让php做两次同样的事情吗?它正在进行一些缓存(没有额外添加我的主机/软件)

if ( simplexml_load_file("http://blip.tv/players/episode/$id?skin=rss" ) ){
    $blip_xml = simplexml_load_file("http://blip.tv/players/episode/$id?skin=rss")
}

4

我可以用javascript做同样的事情,我只需要拉动图像并将其加载为div背景。我是否应该打扰PHP并为js做一个后备并且首先在js中做它?我发现这个simplexml for js script就是4k,似乎在js中模仿simplexml。这是正确的开始方式吗?我认为使用jquery很容易,我会使用它来运行它,但后来可能想要在没有jquery的情况下使用它。或者,即使js中的代码较少,我能做到这一点吗?

1 个答案:

答案 0 :(得分:0)

js不适用于远程主机,因为它与使用XMLHttpRequest()的原始策略绑定。

您应该检查主机是否已启用curl,然后您可以使用它。 /然后改用simplexml_load_string()