Любые мысли о том, почему следующее не работает.
$request_url = "someurl?myId=$id"; //returns feed like above $json = file_get_contents($request_url, true); //getting the file content $decode = json_decode($json, true); var_dump($json);
Когда я вставляю request_url в браузер, я возвращаю данные json, но если я пытаюсь в php, var_dump просто bool (false); Есть идеи??
Обновите и исправьте ОК, спасибо за помощь. Вы помогли мне отследить это. Оказалось, что php.ini настроен на запрет открытия URL-адресов, поэтому file_get_contents не будут работать. Я нашел следующую удобную функцию, упомянутую на разных сайтах, и использовал ее так, чтобы ее отсортировали. Вот метод, который я использовал, если он помогает кому-то другому.
function file_get_contents_curl($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser. curl_setopt($ch, CURLOPT_URL, $url); $data = curl_exec($ch); curl_close($ch); return $data; }
Я реплицировал вашу проблему, и я наблюдаю bool (false), когда URL-адрес ajax ошибочен (не найден). Убедитесь, что ваш «someurl» действителен.
Если JSON недействителен, ваш скрипт будет печатать его правильно. Если url ничего не возвращает, вы по-прежнему наблюдаете 'string (0) ""'
Проблема заключается в неверном URL-адресе.
возможно, кодировка ответа $ request_url не является «utf-8» или «ansi».
Согласно документации PHP, file_get_contents возвращает false при ошибке. Это означает, что URL-адрес недействителен или недоступен из php.
Если вы пытаетесь это сделать с сервера, убедитесь, что ваш брандмауэр не блокирует этот исходящий трафик.