Я настроил вызов API для IGDB.com и на локальном все работает отлично, проблем нет вообще. Хотя в прямом эфире он выполняет множество разных задач, не возвращает никакого тела в массиве и выбрасывает его в [‘headers’] или просто запрашивает ключ, когда я его уже установил.
$headers = array(
'Accept' => 'application/json',
"X-Mashape-Key" => "KEY IS NORMALLY HERE");
$query = array(
'fields' => 'name',
'limit' => 10,
);
//$body = Unirest\Request\Body::form($query);
$response = Unirest\Request::get('https://igdbcom-internet-game-database-v1.p.mashape.com/games/?', $headers, $query);
Использование точно такого же кода делает это, когда я var_dump ответ.
На местном
object(Unirest\Response)#975 (4) { ["code"]=> int(200) ["raw_body"]=> string(121) "[{"id":2411},{"id":2410},{"id":2409},{"id":2408},{"id":1213},{"id":1211},{"id":1210},{"id":1208},{"id":1207},{"id":1206}]" ["body"]=> array(10) { [0]=> object(stdClass)#979 (1) { ["id"]=> int(2411) } [1]=> object(stdClass)#1003 (1) { ["id"]=> int(2410) } [2]=> object(stdClass)#981 (1) { ["id"]=> int(2409) } [3]=> object(stdClass)#976 (1) { ["id"]=> int(2408) } [4]=> object(stdClass)#977 (1) { ["id"]=> int(1213) } [5]=> object(stdClass)#978 (1) { ["id"]=> int(1211) } [6]=> object(stdClass)#996 (1) { ["id"]=> int(1210) } [7]=> object(stdClass)#997 (1) { ["id"]=> int(1208) } [8]=> object(stdClass)#999 (1) { ["id"]=> int(1207) } [9]=> object(stdClass)#1000 (1) { ["id"]=> int(1206) } } ["headers"]=> array(8) { [0]=> string(15) "HTTP/1.1 200 OK" ["Content-Type"]=> string(9) "text/json" ["Date"]=> string(29) "Mon, 13 Feb 2017 22:50:58 GMT" ["Server"]=> string(13) "Mashape/5.0.6" ["X-RateLimit-requests-Limit"]=> string(4) "7000" ["X-RateLimit-requests-Remaining"]=> string(4) "6755" ["Content-Length"]=> string(3) "121" ["Connection"]=> string(10) "keep-alive" } }
В прямом эфире
object(Unirest\Response)#1 (4) { ["code"]=> int(401) ["raw_body"]=> bool(false) ["body"]=> NULL ["headers"]=> array(1) { ["{"message""]=> string(123) ""Missing Mashape application key. Go to http:\/\/docs.mashape.com\/api-keys to learn how to get your API application key."}" } }
Я не могу понять, почему это прекрасно работает на местном, но в прямом эфире он делает что-то совершенно другое.
Я новичок в Unirest, поэтому отладка для меня довольно сложна.
Спасибо!
ОБНОВИТЬ: Это действительно поставило меня в тупик. Похоже, что в реальном времени возвращаемое тело добавляется в массив заголовков. Что не должно происходить. Есть идеи?
Так что после долгих отладок это была проблема безопасности PHP opendir на самом сервере.
Если у кого-то есть такая же или похожая проблема, проверьте настройки opendir в файле php.ini. Для меня это было блокировать сценарий, так что, уменьшая количество сценариев, в которых он может выполняться, теперь он отлично работает.
Других решений пока нет …