File_get_contents не работает для получения json из API в PHP 7

Я юз обновил 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, но прямого ответа на мою проблему нет.

Что является причиной этого?

Как исправить?

Спасибо!

Что еще изменилось? Включены ли "URL-адреса как дескрипторы файлов" и т. д.? А как насчет версий / сертификатов SSL / и т.д.? Создайте простой файл php, содержащий только phpinfo(), проверьте вывод, чтобы увидеть, как все настроено.

ivanivan 31.05.2018 02:50

Проверил phpinfo. Кажется, все в порядке, но я не вижу ничего в параметрах php.ini, например «URL-адреса как дескрипторы файлов».

Anndexi9 31.05.2018 03:17

Это allow_url_fopen php.net/manual/en/…

ivanivan 31.05.2018 03:19

Я проверил это. Оно включено.

Anndexi9 31.05.2018 03:24

включен openssl?

Geomorillo 31.05.2018 03:46

Of Coz, он включен.

Anndexi9 31.05.2018 03:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
2 195
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Наконец-то получил завиток. Это сработало только тогда, когда я пропустил 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);

Другие вопросы по теме