2013-07-15 93 views
2

我有定位PHP腳本,讓我得到一個txt文件的內容遠程服務器上,然後輸出到一個變量roblems。將某些東西輸出到變量並不是最難的部分。這是拾取和閱讀文件內容的難點。有人有主意嗎?PHP腳本來檢查遠程服務器上,一個文件存在

我已經瀏覽了論壇,只能找到一個本地工作的方法。由於目標遙遠,因此不理想。

的目的真的是,我如何找出一個文件的遠程服務器,並輸出HTML狀態上存在。

想法?

回答

3

您可以嘗試使用此代碼:

if (file_exists($path)) { 
    echo "it exists"; 
} else { 
    echo "it does not exist"; 
} 

正如你可以看到$path是你的文件的路徑。當然,你可以寫任何東西,而不是那些echo

+1

這將工作在遠程文件? –

+0

是的,我在我的網站上也使用了這段代碼:) –

2

訪問其他服務器上的文件可能非常棘手!如果您可以通過ftp訪問文件,則可以使用ftp來獲取文件,例如使用ftp_fget()

如果你沒有通過ssh訪問文件系統,你只可以檢查請求的文件時,服務器對響應。如果服務器響應錯誤404,則該文件不存在,或者由於服務器配置而無法通過http訪問該文件。

您可以通過捲曲進行檢查,看this tutorial通過捲曲得到響應代碼的的相關詳細解釋。

+0

嗯,確定它沒有超過ftp。它使用這種格式的網址: *** https://planningpublicaccess.site.gov.uk/some-directory/version.txt ***所以使用SSL(https)。我可以在瀏覽器中瀏覽文件「version.txt」,但是對PHP不感興趣:( – Echelon

+0

好吧,我在這裏有點兒笨蛋!顯然它連接的方式並不重要,但防火牆在另一端我的要求! – Echelon

4

假設你的遠程服務器可以訪問由httpftp你可以使用file_exists()

if (file_exists("http://www.example.com/somefile.txt")) { 
echo "Found it!; 
} 

if (file_exists("ftp:user:[email protected]/somefile.txt")) { 
echo "Found it!; 
} 
+0

我喜歡第一個! – Echelon

0

我知道這是一個古老的線程,但拉爾斯·艾伯特指出,檢查因爲在遠程服務器上存在一個文件可能會很棘手,所以使用cURL檢查服務器響應是我如何在我們的大旅行網站上完成的。使用file_exists()每次都會拋出一個錯誤,但檢查「200 OK」已被證明非常成功。下面是我們使用來檢查我們的酒店列表頁面圖像的代碼:

$media_url = curl_init("http://pathto/remote_file.png"); 
curl_setopt($media_url, CURLOPT_RETURNTRANSFER, true); 
$media_img = curl_exec($media_url); 
$server_response = curl_getinfo($media_url, CURLINFO_HTTP_CODE); 
if($server_response != 200){ 
    echo "pathto/graphics/backup_image.png"; 
}else{ 
    echo "http://pathto/remote_file.png"; 
} 

其中「http://pathto/remote_file.png」是我們所追求的遠程圖像,但我們需要知道它是否真的存在。如果遠程映像不存在,則顯示「pathto/graphics/backup_image.png」。

我知道這是非常冗長,相比file_exists(),但它也更準確,至少到目前爲止是這樣。

相關問題