Как проверить, существует ли файл на внешнем сервере

Как проверить, существует ли файл на Внешнем Сервере? У меня есть URL "http://logs.com/logs/log.csv", и у меня есть сценарий на другом сервере, чтобы проверить, существует ли этот файл. Я попробовал

$handle = fopen("http://logs.com/logs/log.csv","r");
if($handle === true){
return true;
}else{
return false;
}

и

if(file_exists("http://logs.com/logs/log.csv")){
return true;
}else{
return false;
}

Эти methos просто не работают

7
задан Roland 18 February 2010 в 12:19
поделиться

3 ответа

  1. Убедитесь, что отчет об ошибках включен.

  2. Используйте if($handle)

  3. Проверьте allow_url_fopen на true.

  4. Если ничего из этого не работает, используйте этот метод на странице file_exists.

3
ответ дан 6 December 2019 в 11:48
поделиться
  <?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 4file dir);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10);

    $data = curl_exec($ch);
    curl_close($ch);

    preg_match_all("/HTTP\/1\.[1|0]\s(\d{3})/",$data,$matches); //check for HTTP headers

    $code = end($matches[1]);

    if(!$data) 
    {
        echo "file could not be found";
    } 
    else 
    {
        if($code == 200) 
        {
            echo "file found";
        } 
        elseif($code == 404) 
        {
            echo "file not found";
        }
    }
  ?>
1
ответ дан 6 December 2019 в 11:48
поделиться

Это должно сработать:

$contents = file_get_contents("http://logs.com/logs/log.csv");

if (strlen($contents))
{
  return true; // yes it does exist
}
else
{
  return false; // oops
}

Примечание: Это предполагает, что файл не пуст

3
ответ дан 6 December 2019 в 11:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: