PHP file_get_contents не работает на localhost

Я работаю на своем сайте с localhost (http://172.16.65.1/) сервера MAMP на OSX.
Я хочу загрузить JSON из Google, и некоторые простые тесты показывают мне, что у меня есть проблема здесь.

echo file_get_contents("http://www.google.com"); // FAILS // PHP log: [07-Dec-2011 23:09:21] PHP Warning: file_get_contents(http://www.google.com) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: Host is down in /Applications/MAMP/htdocs/-tests/get-json.php on line 3 echo file_get_contents("http://www.yahoo.com"); // FAILS // echo file_get_contents("http://localhost"); // WORKS // echo file_get_contents("http://172.16.65.1/"); // WORKS - My MAMP server 

Что я могу сделать по этому поводу? Он отлично работает на сервере хост-провайдеров.

Из документации для file_get_contents :

URL-адрес может использоваться как имя файла с этой функцией, если обертки fopen включены. См. Fopen () для получения дополнительной информации о том, как указать имя файла. См. Поддерживаемые протоколы и обертки для ссылок на информацию о том, какие способности могут иметь различные обертки, заметки об их использовании и информация о любых предопределенных переменных, которые они могут предоставить.

Проверьте свой php.ini поэтому allow_url_fopen установлен в on .

РЕДАКТИРОВАТЬ:

Я не заметил, что вы на самом деле можете использовать file_get_contents локально, так что теперь я думаю, что это может иметь какое-то отношение к вашим firewall settings .

Кроме того, попробуйте установить user_agent в php.ini если это еще не сделано.

Вам также нужно проверить файл PHP.ini

 extension = php_openssl.dll 

разрешено или нет, если нет, то просто включите это, удалив; знак

 allow_url_fopen = on 

Это может быть параметр в вашем файле php.ini. Существует параметр allow_url_fopen, который включает / отключает возможность открывать удаленные файлы с php. По соображениям безопасности это обычно по умолчанию отключено. Вы можете включить его в php.ini, добавив следующую строку:

 allow_url_fopen = 1 

Опять же, помните о проблемах безопасности при использовании этой функции.

http://php.net/manual/en/filesystem.configuration.php

Попробуйте эту функцию вместо 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

Во втором вы пытаетесь открыть файл с именем localhost в текущей папке, который не существует и, следовательно, выдает ошибку. Вместо этого используйте http: // localhost . И чтобы сделать эту работу, вам нужно установить allow_furl_open.

Я использовал file_get_contents следующим образом: file_get_contents (" https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name= ". $ Screenname. "& Count = 5");

И это не сработало, поэтому я изменил https на http, после чего он работает хорошо.

 file_get_contents("http://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=".$screenname."&count=5");