PHP file_get_contents не работает на localhost - PullRequest
9 голосов
/ 08 декабря 2011

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

Ответы [ 6 ]

11 голосов
/ 22 июня 2013

Вам также необходимо проверить, что PHP.ini файл

extension = php_openssl.dll

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

allow_url_fopen = on
5 голосов
/ 08 декабря 2011

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

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

Проверьте в php.ini, чтобы allow_url_fopen было установлено на on.

EDIT:

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

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

3 голосов
/ 12 июля 2014

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

3 голосов
/ 08 декабря 2011

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

allow_url_fopen = 1

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

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

1 голос
/ 08 декабря 2011

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

0 голосов
/ 19 ноября 2012

Я использовал 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");
...