0

サーバーでは問題なく動作するこのスクリプトがありますが、ローカルのワンプではエラーが発生しています

私は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;
    }
?>

このコードはサーバーでは正常に機能しますが、ローカルのワンプサーバーでは機能しません

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')少なくとも 1 つのケースでは、エラーの原因となっている完全な 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 に答える