Php 在本地wamp中获得原始输出在Web服务器中同样工作正常

Php 在本地wamp中获得原始输出在Web服务器中同样工作正常,php,wamp,wampserver,get-headers,Php,Wamp,Wampserver,Get Headers,我有这个脚本,它在服务器上运行得很好,但在本地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-

我有这个脚本,它在服务器上运行得很好,但在本地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;
    }
?>
警告:get_headers():此函数只能用于第8行C:\wamp\www\url\test5.php中的url

这段代码在服务器上运行正常,但在本地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)

请记住,这将只适用于根相对路径;您可能需要先检查绝对路径和相对路径,然后再假设它们需要以这种方式粘合域。

当回声时,
$op7
的值是多少?也许它是一个相对的url?@SarahKemp当我使用->它开始将原始代码作为输出@$doc->loadHTML($html)时,我得到了一些线索;请通过编辑您的问题进一步解释您的评论,如果您需要更多帮助,请回答我的问题。删除您声明中的
@
符号也会有帮助,这样我们就可以看到您的错误。@SarahKemp这里是我的错误的屏幕截图,但它在您的本地服务器上不起作用,或者您不会寻求帮助。你在这个回答中试过我的建议了吗?您是否从
loadHTML()
请求中删除了错误抑制器?如果你不尝试这些东西,我就不会帮你做研究。