Я юз обновил php с 5.6 до 7.2.
До 7.2 оба file_get_contents отлично работали для получения json из API, но после обновления до 7.2 он вернул false.
file_get_contents ($ url) => ложь
URL такой: 'https: // имя пользователя: пароль @ домен_проекта / api / json / xxx /? param_a ='. $ а. '& param_b ='. $ млрд
И я даже не трогал настройку по умолчанию в php.ini, которая, вероятно, связана с file_get_contents: allow_url_fopen = Вкл.
Я сделал это в Google, но прямого ответа на мою проблему нет.
Что является причиной этого?
Как исправить?
Спасибо!
Проверил phpinfo. Кажется, все в порядке, но я не вижу ничего в параметрах php.ini, например «URL-адреса как дескрипторы файлов».
Это allow_url_fopen php.net/manual/en/…
Я проверил это. Оно включено.
включен openssl?
Of Coz, он включен.






Наконец-то получил завиток. Это сработало только тогда, когда я пропустил ssl. В любом случае, владеть проектом - это juz https, так что это не должно быть проблемой для безопасности.
function getJsonFromAPI($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch);
$data = json_decode($result);
return $data;
}
Кстати, я обнаружил, что file_get_contents работает только для https на внешний URL-адрес, но не для https-соединения с самим проектом. Любое исправление этого приветствуется.
$url = "https://www.f5buddy.com/";
$options = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7\r\n"
));
$context = stream_context_create($options);
$file = file_get_contents($url, false, $context);
$file=htmlentities($file);
echo json_encode($file);
Что еще изменилось? Включены ли "URL-адреса как дескрипторы файлов" и т. д.? А как насчет версий / сертификатов SSL / и т.д.? Создайте простой файл php, содержащий только
phpinfo(), проверьте вывод, чтобы увидеть, как все настроено.