2014-01-13 76 views
0

我在我的站點中的文件,例如:http://example.com/name.txt如何驗證file_get_contents()?

我想檢查此文件中的函數中存在,所以我做了這個

<?php 

function checkFile($fileUrl){ 
    if(!is_file($fileUrl) || !is_readable($fileUrl)){ 
    return 'This is not valid file'; 
    } 

} 

由於checkFile('http://example.com/name.txt');表示無法文件的文件,我試圖用這種方法來檢查。

function checkFile($fileUrl){ 
     $file = file_get_contents($fileUrl); 
     if(empty){ 
     return 'File not found or empty'; 
     } 
    } 

但這兩種方法都給我錯誤靜態的文件沒有找到。我確定該文件在那裏,那麼我怎麼才能真正檢查文件是否存在在線?

回答

1
function checkFile($fileUrl) { 
    if (!file_exists($fileUrl)) { 
     return 'This file is not a valid file.'; 
    } 
} 

旁註這僅僅是因爲PHP 5 http://us1.php.net/manual/en/function.file-exists.php

+0

這仍然給我虛假。我使用了'var_dump(file_exists('http://foo.com/name.txt'))'該文件已經存在,但它返回false。 – user2679413

+0

當我將其輸入到瀏覽器時,出現HTTP 500錯誤,這意味着它將返回false,因爲該文件無法訪問 – Rottingham

+0

@ user2679413 file_exists無法訪問遠程服務器,您將需要使用fopen或某物來檢查file_exists。 – Abhishek

2

另外,您可以從服務器檢查響應頭,如果404隨後將文件不使用功能

get_headers存在(有效)

http://us1.php.net/manual/en/function.get-headers.php

$file = 'http://www.domain.com/somefile.jpg'; 
$file_headers = @get_headers($file); 
if($file_headers[0] == 'HTTP/1.1 404 Not Found') { 
    $exists = false; 
} 
else { 
    $exists = true; 
} 
+1

這不幸地促進了@用於沉默錯誤,這是非常糟糕的做法。而且,不幸的是,它需要使用get_headers(),因爲它總是會拋出一些關於某事的警告,並且沒有什麼可以阻止它。這也使得它不好做:-) – Rottingham

+0

它解決了一個目的,因爲有時你總是需要在從另一個服務器獲取數據的情況下保持沉默錯誤。因爲你只需要其他數據。 加get_headers是不可靠的,我知道,而不是基於網絡的任何函數不可靠,因爲這取決於服務器響應。 – Abhishek