Проверьте, существует ли файл на удаленной машине - PullRequest
1 голос
/ 21 ноября 2010

Я хочу проверить, существует ли файл на удаленном веб-сервере с php.

Теперь у меня есть эта функция:

function url_exists($url) {
   // Version 4.x supported
   $handle   = curl_init($url);
   if (false === $handle)
   {
       return false;
   }
   curl_setopt($handle, CURLOPT_HEADER, false);
   curl_setopt($handle, CURLOPT_FAILONERROR, true);  // this works
   curl_setopt($handle, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15") ); 
    // request as if Firefox    
    curl_setopt($handle, CURLOPT_NOBODY, true);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, false);
    $connectable = curl_exec($handle);
    curl_close($handle);
    return $connectable;
}

Работает нормально, но если я передаю IP-адрес вместо имени домена, он возвращает false. (поэтому я хочу проверить http://123.456.789.121/test.jpg, при отправке http://somedomain.com/test.jpg все работает нормально ...)

Есть идеи?

Заранее спасибо!

1 Ответ

3 голосов
/ 21 ноября 2010

Удаленный сервер, вероятно, разрешает файлы, используя заголовок Host.
Если это так, вам нужно использовать доменное имя.

Возможно, вы сможете явно передать заголовок Host на IP-адрес, но я бы не рекомендовал его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...