PHP Fatal error: Uncaught TypeError: curl_setopt(): The CURLOPT_HTTPHEADER option must have an array value

что-то не работает в моей функции.. Я пытаюсь найти здесь некоторую информацию, но не знаю, как это исправить. кто-нибудь знает, как исправить этот код в php 8. на php7 работает без проблем

function get($url, $file = false)
{
    global $config_mod;
    $page = curl_init($url);
    curl_setopt($page, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($page, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($page, CURLOPT_FOLLOWLOCATION, 1);
    if ($config_mod["proxy"]) {
        if (preg_match("/([^:]+):([^:]+):([^:]+):(.*)/", $config_mod["proxy"], $find)) {
            curl_setopt($page, CURLOPT_PROXYAUTH, CURLAUTH_BASIC | CURLAUTH_NTLM);
            curl_setopt($page, CURLOPT_PROXY, $find[1] . ":" . $find[2]);
            curl_setopt($page, CURLOPT_PROXYUSERPWD, $find[3] . ":" . $find[4]);
        } else {
            $ep = explode(":", $config_mod["proxy"]);
            curl_setopt($page, CURLOPT_PROXY, $ep[0] . ":" . $ep[1]);
        }
        if ($config_mod["proxy_type"] == "sock4") {
            curl_setopt($page, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
        } else {
            if ($config_mod["proxy_type"] == "sock5") {
                curl_setopt($page, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
            }
        }
    }
    curl_setopt($page, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($page, CURLOPT_TIMEOUT, 10);
    curl_setopt($page, CURLOPT_ENCODING, "gzip, deflate");
    curl_setopt($page, CURLOPT_HTTPHEADER, ["accept:*/*", "accept-encoding:gzip, deflate", "accept-language:ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7", "referer:https://play.google.com/store/apps/details?id=com.google.android.youtube", "user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.3282.186 Safari/537.36"]);
    if ($file) {
        $fp = fopen($file, "wb");
        curl_setopt($page, CURLOPT_FILE, $fp);
    }
  
    curl_setopt($page, CURLOPT_HTTPHEADER, $headers);
    $res = curl_exec($page);
    curl_close($page);
    if ($file) {
        fclose($fp);
        @chmod($file, 438);
        $info = @getimagesize($file);
        if (is_array($info)) {
            if ($info[2] == 2) {
                $ext = "jpg";
            } else {
                if ($info[2] == 3) {
                    $ext = "png";
                } else {
                    if ($info[2] == 1) {
                        $ext = "gif";
                    } else {
                        $ext = "jpg";
                    }
                }
            }
            rename($file, $file . "." . $ext);
            return $file . "." . $ext;
        }
        @unlink($file);
        return false;
    }
    return $res;
}

Ответы (1 шт):

Автор решения: Дима К.

У вас есть строка

curl_setopt($page, CURLOPT_HTTPHEADER, $headers);

В ней переменная $headers неопределена, а ошибка говорит, что надо передать массив.

Чут выше по коду уже есть установка CURLOPT_HTTPHEADER, поэтому видимо эта строка не нужна

→ Ссылка