【问题标题】:allow_url_fopen=0 How to propper check for errors and are there alternatives?allow_url_fopen=0 如何正确检查错误,是否有替代方案?
【发布时间】:2026-01-07 06:35:01
【问题描述】:

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

此主机(免费主机)已禁用此功能。所以我打算研究一个付费选项(我假设它在那里找不到任何关于它教过的东西。无论如何我教过,如果整个脚本实际上停止执行,因为它稍后我可能会从中学习,更改我的代码为了更好地使用 java-script 后备或其他东西。

致命错误:在非对象中调用成员函数 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) 是否实际上是错误的/没有被引导或者函数本身是不可能的?

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 很容易,我实际上在 atm 使用它,但后来可能想在没有 jquery 的情况下使用它。或者我可以用更少的 js 代码来做这个简单的事情吗?

【问题讨论】:

  • 很遗憾 blip 和 vimeo 需要愚蠢的 xml 处理来获取视频缩略图。 youtube 和 dailymotion 以正确的方式做到这一点。只需从 url 加载它们并感到高兴。

标签: php javascript xml-parsing


【解决方案1】:

该 js 不适用于远程主机,因为它与使用 XMLHttpRequest() 的源策略相同。

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

【讨论】:

  • 我猜 JSON 也是如此?