сервер, на который вы попали, не отправляет заголовок Content-Length
(либо не отправляет его вообще, либо отправляет искаженный, я не уверен, вы можете проверить подробный журнал, чтобы узнать), который заставляет curl просто продолжать чтение, пока удаленный сервер не закроет сокет, и сервер использовал более 5 секунд для закрытия сокета, и 5 секунд, по-видимому, являются значением по умолчанию CURLOPT_TIMEOUT, поэтому вы получили ошибку тайм-аута ... и когда вы получите ошибку с CURLOPT_RETURNTRANSFER curl_exe c () не возвращает строку ответа, но возвращает bool (false), чтобы указать, что произошла ошибка.
вы можете попытаться увеличить CURLOPT_TIMEOUT, чтобы посмотреть, закроет ли сервер в конце концов сокет ,
// timeout at 10 seconds instead of 5, server reponds slowly sometimes..
curl_setopt($ch,CURLOPT_TIMEOUT,10);
или вы можете удалить
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
и добавить
$response="";
curl_setopt($ch,CURLOPT_WRITEFUNCTION,function($ch,string $data)use(&$response):int{
$response.=$data;
return strlen($data);
});
$error_if_false=curl_exec($ch);
if(false===$error_if_false){
// error, but your response is now in $response regardless.
}