Как проверить существует ли сайт?

Возникла такая проблема: нужно проверить существует ли сайт, файл на сайте или страница. Нашел такой код с curl, но он на рабочий сайт и не рабочий выдает всегда, что сайт рабочий:

    function is_url_exist($url){
    $ch = curl_init($url);    
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_exec($ch);
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    if($code == 200){
       $status = true;
    }else{
      $status = false;
    }
    curl_close($ch);
   return $status;
}

Буду благодарен, если предложите решение


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

Автор решения: Эдуард

В PHP для этого есть штатная функция get_headers():

$url = 'http://www.example.com';

$code = get_headers($url)[0];

var_dump($code); // HTTP/1.0 200 OK

Если сайт доступен, то код ответа будет 200, иначе будет другой код, значение которого можно найти в Википедии.


Таким образом, вашу функцию можно существенно сократить:

$url = 'http://www.example.com';

var_dump( urlExists($url) ); // true


function urlExists(string $url): bool
{
    return substr(get_headers($url)[0], 9, 3) == 200;
}
→ Ссылка