file_get_contents не работает для получения JSON из API в PHP 7 - PullRequest
0 голосов
/ 31 мая 2018

Я обновил php с 5.6 до 7.2.

До 7.2 оба file_get_contents работали нормально для получения json из API, но после обновления до 7.2 он возвращал false.

file_get_contents ($ url) => false

URL-адрес выглядит так: 'https://username:password@project_domain/api/json/xxx/?param_a='.$ a.'¶M_b ='.$ b

И я даже не коснулся настройки по умолчанию в php.ini, которая, вероятно, связана с file_get_contents: allow_url_fopen = On

Я сделал Google для этого, но нет прямого ответа намоя проблема.

В чем причина?

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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 31 мая 2018
$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);
0 голосов
/ 31 мая 2018

Наконец-то получил с помощью curl.Это сработало только когда я пропустил ssl.В любом случае это собственный 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 к самому проекту.,Любое исправление к этому ценится.

...