PHP file_get_contents () не работает

Может ли кто-нибудь объяснить, почему следующий код возвращает предупреждение:

<?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 

См. Код

В качестве альтернативы вы можете использовать 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

Попробуйте эту функцию вместо 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 (или другую unix-подобную операционную систему с aptitude):

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

См. Также cURL

Это почти наверняка вызвано настройкой конфигурации, которая позволяет PHP отключать возможность открывать URL-адреса, используя функции обработки файлов.

Если вы можете изменить PHP.ini, попробуйте allow_url_fopen параметр allow_url_fopen . См. Также справочную страницу для fopen для получения дополнительной информации (одни и те же ограничения влияют на все функции обработки файлов)

Если вы не можете включить флаг, вам нужно будет использовать другой метод, например Curl, для чтения вашего URL-адреса.

Если вы запустите этот код:

 <?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 .

Попробуйте завершающую косую черту после имени хоста.

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

вы можете использовать одиночные кавычки следующим образом:

 file_get_contents('http://google.com');