2013-02-10 26 views
8

Forse sono stato seduto qui per troppo tempo a fissare questo, ma PERCHÉ i file_get_contents restituiscono false qui, ho tagliato e incollato l'URL e funziona correttamente?PHP file_get_contents che restituiscono 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; 

Grazie

Marc

EDIT:

Ho controllato per allow_url_fopen e la sua sicuramente via.

+0

possibile duplicato di [Problema nell'ottenere contenuti/file utilizzando file \ _get \ _contenuti dall'URL o Problema nella codifica geografica inversa] (http://stackoverflow.com/questions/6954220/problem-in-getting-contents-files-using -file-get-contents-from-url-or-problem-i) – mario

+0

Nessuna delle risposte sembra essere applicabile a questa domanda. – Barmar

risposta

7

Prova questo:

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

Il problema è che non eri URL-codifica il termine di ricerca, che contiene uno spazio. La richiesta stava restituendo un errore 400 dal server, che avresti notato se avessi abilitato la segnalazione degli errori.

+0

In breve, ti amo..ho provato a fare $ url = urlencode (....) ma quello non sembra funzionare, qual è la differenza? –

+1

Questo codificherà tutti i caratteri delimitatori nell'URL, quindi non verranno riconosciuti come delimitatori. – Barmar

+0

Gotcha, grazie per avermi aiutato! –

7

Potrebbe essere necessario abilitare allow_url_fopen nel tuo php.ini

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

Dalla documentazione:

Questa opzione abilita i wrapper URL per fopen, che consentono di accesso oggetto URL del tipo File.

server potrebbe essere si impedisce l'apertura di un file che si trova in un URL utilizzando file_get_contents.

+0

Attualmente /etc/php.ini ha permesso_url_fopen = On –

+0

se file_get_contents() restituisce false quindi non può leggere il file. Se il valore è NULL, la funzione stessa è disabilitata. –

Problemi correlati