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
, поэтому видимо эта строка не нужна