在本地wamp中获取原始输出相同的代码在web服务器中运行良好


getting raw output in local wamp same code working fine in webserver

我有这个脚本,它在服务器上运行得很好,但在本地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服务器中运行不好

我认为您需要打开以下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;
}

根据您链接的屏幕截图,$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)

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