2010-02-18 10 views
6

Harici bir sunucuda dosya olup olmadığını nasıl kontrol edebilirim? Bir url "http://logs.com/logs/log.csv" var ve bu dosya olup olmadığını denetlemek için başka bir sunucuda bir komut dosyası var. Ben Bu çözüm yöntemleri sadeceBir dosyanın harici bir sunucuda var olup olmadığını nasıl kontrol edilir

+1

'denemek boş değilse ($ kolu)'. "$ handle" bir boole olmayacak, bu yüzden biriyle karşılaştırmanın bir anlamı yok. – Skilldrick

+0

Benzer soru: http://stackoverflow.com/questions/2280394 – Gordon

cevap

3
  1. emin hata raporlama açık olduğundan emin olun çalışmıyor

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

    ve

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

    çalıştı.

  2. Kullanım if($handle)

  3. Kontrol allow_url_fopen doğrudur. Bu çalışmalardan hiçbiri işe yaramıyorsa, this method on the file_exists page kullanın.

1
<?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"; 
     } 
    } 
    ?> 
+0

URL'lerin verilerini, yalnızca çalıştıklarını kontrol edildikten sonra bir kez çağrılabilecek şekilde yakalayabilmenin bir yolu var mı? – My1

3

Bu çalışması gerekir:

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

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

Not: Bu dosyayı kabul

+1

Dosya var, ancak boşsa ne olur? – Skilldrick

+0

@Skilldrick: haklısınız, cevabı değiştirilmiş. – Sarfraz

+0

Dosya çok büyük – eithed

8
function checkExternalFile($url) 
{ 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_exec($ch); 
    $retCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    curl_close($ch); 

    return $retCode; 
} 

$fileExists = checkExternalFile("http://example.com/your/url/here.jpg"); 

// $fileExists > 400 = not found 
// $fileExists = 200 = found. 
İlgili konular