2013-02-10 3 views
8

Возможно, я сидел здесь слишком долго, смотря на это, но ПОЧЕМУ было бы file_get_contents возвращать false здесь, я вырезал и вставлял URL-адрес, и он отлично работает?PHP file_get_contents, возвращающий false

 $url = "http://jobs.github.com/positions.json?search=" . $as_any . "&location=" .  $location; 
    // URL contains http://jobs.github.com/positions.json?search=Project Manager&location=London 
    var_dump($url); 
    $json = file_get_contents($url); 
    var_dump($json); 
    $results = json_decode($json, TRUE); 
    var_dump($results); 
    exit; 

Благодаря

Marc

EDIT:

Я проверил для allow_url_fopen и его определенно на.

+0

Возможный дубликат [Проблема с получением содержимого/файлов с использованием файла \ _get \ _contents из url или проблемы в обратном геокодировании] (http://stackoverflow.com/questions/6954220/problem-in-getting-contents-files-using -file-get-contents-from-url-or-problem-i) – mario

+0

Ни один из ответов, похоже, не применим к этому вопросу. – Barmar

ответ

7

Попробуйте это:

$query = http_build_query(array('search'=>$as_any, 'location'=>$location)); 
$url = "http://jobs.github.com/positions.json?" . $query; 

Проблема заключается в том, что вы не были URL-кодирующая термин поиска, который содержит пробел. Запрос возвращал 400 ошибок с сервера, которые вы заметили бы, если бы были включены отчеты об ошибках.

+0

Короче говоря, я люблю тебя .. Я пытался сделать $ url = urlencode (....), но это, похоже, не работало, в чем разница? –

+1

Это будет кодировать все символы разделителя в URL-адресе, поэтому они не будут распознаваться как разделители. – Barmar

+0

Gotcha, спасибо, что помогли мне! –

7

Вам может понадобиться включить allow_url_fopen в вашем php.ini

http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

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

Эта опция позволяет URL-Aware FOPEN оберток, которые позволяют работать с объектами URL как файлы.

Возможно, ваш сервер может помешать вам открыть файл, расположенный по URL-адресу, используя file_get_contents.

+0

В настоящее время /etc/php.ini имеет allow_url_fopen = On –

+0

, если file_get_contents() возвращает false, тогда он не смог прочитать файл. Если значение NULL, то сама функция отключена. –

Смежные вопросы