4

次のコードが警告を返す理由を誰でも説明できますか:

<?php
  echo file_get_contents("http://google.com");
?>

警告が表示されます:

Warning: file_get_contents(http://google.com): 
failed to open stream: No such file or directory on line 2

コードパッドを参照

4

6 に答える 6

11

別の方法として、次のように cURL を使用できます。

$url = "http://www.google.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
echo $data;

参照: cURL

于 2012-09-06T06:39:00.270 に答える
4

file_get_contents() の代わりにこの関数を試してください:

<?php

function curl_get_contents($url)
{
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);

    $data = curl_exec($ch);
    curl_close($ch);

    return $data;
}

これは file_get_contents() と同じように使用できますが、cURL を使用します。

cURL を Ubuntu (または aptitude を備えたその他の UNIX ライクなオペレーティング システム) にインストールします。

sudo apt-get install php5-curl
sudo /etc/init.d/apache2 restart

cURLも参照

于 2014-07-11T22:55:39.383 に答える
2

これは、PHP がファイル処理関数を使用して URL を開く機能を無効にできる構成設定が原因であることがほぼ確実です。

PHP.ini を変更できる場合は、allow_url_fopen設定をオンにしてみてください。詳細については、fopen の man ページも参照してください(同じ制限がすべてのファイル処理関数に影響します)。

フラグをオンにできない場合は、Curl などの別の方法を使用して URL を読み取る必要があります。

于 2012-09-06T06:30:20.897 に答える
1

このコードを実行すると:

<?php
    print_r(stream_get_wrappers());
?>

http://codepad.org/NHMjzO5pには、次の配列が表示されます。

Array
(
    [0] => php
    [1] => file
    [2] => data
)

Codepad.Viper - http://codepad.viper-7.com/lYKihIで同じコードを実行すると、http ストリームが有効になっているためfile_get_contents、codepad.org では機能しないことがわかります。

Array 
( 
    [0] => https 
    [1] => ftps 
    [2] => compress.zlib 
    [3] => php 
    [4] => file 
    [5] => glob 
    [6] => data 
    [7] => http 
    [8] => ftp 
    [9] => phar 
)

上記の質問コードを Codepad.Viper で実行すると、Google ページが開きます。したがって、違いはhttp、CodePad.org で無効化され、CodePad.Viper で有効化されるストリームです。

有効にするには、次の投稿HTTPS ストリーム ラッパーを有効にする方法 をお読みください。または、 を使用しますcURL

于 2012-09-06T06:50:15.270 に答える
-2

ホスト名の後にスラッシュを付けてみてください。

<?php
    echo file_get_contents("http://google.com/");
?>
于 2016-08-03T08:38:18.173 に答える
-5

次のように一重引用符を使用してみてください。

file_get_contents('http://google.com');
于 2015-01-24T10:24:56.273 に答える