file_get_contents работает прямо на localhost, а не на виртуальном хостинге - PullRequest
1 голос
/ 31 января 2020

Вот простой пример, этот код получает количество подписчиков любого пользователя Instagram без API.

$otherPage = 'nasa';
$response = file_get_contents("https://www.instagram.com/$otherPage/?__a=1");
if ($response !== false) {
    $data = json_decode($response, true);
    if ($data !== null) {
        $follows = $data['graphql']['user']['edge_follow']['count'];
        $followedBy = $data['graphql']['user']['edge_followed_by']['count'];
        echo $follows . ' and ' . $followedBy;
    }
}

Этот код работает на моем локальном хосте, а также на сервере моего друга, но на моем общем хостинге он не работает: (

Функция file_get_contents работает хорошо, но только с внутренними файлами, а не с онлайн-ссылками.

Кто-нибудь понимает, почему?

1 Ответ

2 голосов
/ 31 января 2020

Вероятно, это связано с тем, что хостинг-провайдер отключил allow_url_fopen в конфигурации.

Параметр по умолчанию должен быть включен, что, вероятно, верно как для вашего / вашего на сервере друга, провайдеры общего хостинга обычно отключают эту и другие вещи, которые могут быть вредоносными / могут повлиять на другие сайты, работающие на том же хосте.

Для подтверждения попробуйте получить значение, если это отключено, вы не сможете звонить fopen с удаленных URI.

echo ini_get("allow_url_fopen");
...