2015-10-18 8 views
2

Я пытаюсь получить текст с сайта с file_get_contents() -функцией в PHP.file_get_contents с http - Не удалось открыть поток

 $myVariable = file_get_contents('myUrl/json/file.json?jsonp=loadSomething); 

К сожалению, я получаю сообщение

"Warning: 
file_get_contents(myUrl/json/file.json?jsonp=loadSomething): 
failed to open stream: HTTP request failed! 
HTTP/1.1 404 Not Found in *path of my .php- file* on line 10" 

В php.ini, allow_url_fopen установлен в положение "On". Я также уже пробовал urlencode(). Что я могу сделать, чтобы заставить мой код работать?

+0

и вы, то есть ВСП-пользователь прочитал доступ к этому каталогу? – davidkonrad

+0

Как вы это понимаете? Код находится в «helper.php» -файле модуля, установленном на моей странице Joomla, поэтому, я полагаю, у www-пользователя есть доступ на чтение. –

+0

Я имею в виду, у вас есть правильные права пользователя на 'json /'? Однако попробуйте использовать абсолютный путь, если вы еще этого не сделали. – davidkonrad

ответ

2

ОК, удаленный файл -. Когда file_get_contents терпит неудачу, cURL ваш друг:

function file_get_contents_curl($url) { 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'); 
    $data = curl_exec($curl); 
    curl_close($curl); 
    return $data; 
} 

теперь попробуйте

$myVariable = file_get_contents_curl('myUrl/json/file.json?jsonp=loadSomething'); 
+0

Спасибо за ваш ответ. Я не получаю никаких предупреждений или ошибок прямо сейчас, но тем не менее, я не получаю текст сайта должным образом. При вызове функции появляется только «0». –

+0

@ msu-welle - Я начинаю верить, что ваш удаленный сайт активно пытается предотвратить выскабливание и т. Д. См. Обновление, пытаясь подделать ваш звонок, производится браузером 'CURLOPT_USERAGENT'. – davidkonrad

+0

Спасибо, он работает сейчас :) –

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