0

我有这个脚本,它在服务器中工作得很好,但在本地 wamp 中它给出了错误

我有 fopen 开启

Warning: get_headers(): This function may only be used against URLs in C:\wamp\www\url\test5.php on line 8


<?php 
    $websitelink= 'http://www.brobible.com/girls/article/miley-cyrus-21st-birthday-party';
    $html = file_get_contents($websitelink); 
    $doc = new DOMDocument(); 
    @$doc->loadHTML($html); 
    $tags = $doc->getElementsByTagName('img'); 
    foreach ($tags as $tag) { 
        $data = get_headers($tag->getAttribute('src'),1); 
        $op7=''.$tag->getAttribute('src').'';
        echo $op7;
    }
?>

此代码在服务器中运行良好,但在本地 wamp 服务器中运行良好

4

2 回答 2

0

的值取决于您链接的屏幕截图$op7/files/img/nav/nav_02.png这是一个根相对 URL,get_headers()需要一个绝对 URL(以“http://”开头)。

您需要将要查询的域 ( http://www.brobible.com) 粘合到图像的根相对路径,使其看起来像

get_headers('http://www.brobible.com'.$tag->getAttribute('src'),1)

请记住,这现在仅适用于根相对路径;在假设它们需要以这种方式粘合域之前,您可能需要检查绝对路径和相对路径。

于 2013-12-03T21:27:43.457 回答
0

我认为您需要打开以下 PHP 参数。

allow_url_fopen = On

您可以在 php.ini 文件中找到它。

如果您使用的是 WAMPServer,那么您也可以使用 wampmanager 图标菜单将其打开,如下所示

left_click wampmanager icon -> PHP -> PHP Settings -> Allow URL Fopen

我仔细查看了您的代码。

我想$tag->getAttribute('src')至少在一种导致您的错误的情况下,其中的数据没有完整的 url。它可能使用的是相对地址img/imagename.png,而不是http://example.com/img/imagename.png

这将很好地解释错误消息。

尝试添加您从该声明中得到的回声。

$tags = $doc->getElementsByTagName('img'); 
foreach ($tags as $tag) { 

    echo $tag->getAttribute('src');

    $data = get_headers($tag->getAttribute('src'),1); 
    $op7=''.$tag->getAttribute('src').'';
    echo $op7;
}
于 2013-12-01T16:01:29.393 回答