2013-08-22 26 views
5

我有兩臺服務器。我已連接到一個.txt文件。PHP:如何從FTP服務器讀取.txt文件到變量中?

我需要獲取.txt文件內容並將它們放到$變量中。這裏是我的代碼, 不工作:

$ftp_server = $_POST["site"]; 
$path = $_POST["path"]; 
$ftp_user_name = $_POST["username"]; 
$ftp_user_pass = $_POST["pass"]; 

// set up basic connection 
$conn_id = ftp_connect($ftp_server); 

// login with username and password 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

ftp_get($conn_id, $content,"/" . $_POST["path"] . "/" . "#" . $result["id"] 
. " - " . $result["LastName"] . ", " . $result["FirstName"] . "/" . $_POST["title"] . ".txt", FTP_ASCII); 

此代碼連接到FTP和我用ftp_get從一個文本文件複製到一個變量名爲$內容。我知道一個變量不屬於這個參數,但我現在就賣掉了。我不知道如何閱讀這個.txt文件。

有沒有辦法做到這一點與PHP的FTP功能?

感謝

現在,當我試試這個:

$fileContents = file_get_contents('ftp://username:pa‌​[email protected]/path/to/file'); 

它給出了一個550錯誤,指出.txt文件不是一個普通的文件。爲什麼我得到這個錯誤?

再次感謝

這裏是我得到官方的錯誤:

警告:的fopen(ftp://[email protected]/101Notebook備份:22-08-2013 /#11 - Cappucci,瑞安/ queen.txt)功能.fopen]:未能打開流:FTP服務器報告550/101Notebook備份:22-08-2013 /:不是普通文件中的/home/content/34/11614434/html/adminpdo.php 269行

+0

'$ fileContents ='['file_get_contents'](http://be2.php.net/file_get_contents)'('ftp:// username:password @ hostname/path/to/file') ;' –

+0

當我做到上述並指向我的.txt文件時,它給出了一個550錯誤,說它不是一個普通的文件。 –

回答

10

試試這個,這個代碼是從http://www.php.net/manual/en/function.fread.php

<? 
$filename = "ftp://username:pa‌​[email protected]/path/to/file"; 
$handle = fopen($filename, "r"); 
$contents = fread($handle, filesize($filename)); 
fclose($handle); 

echo $contents; 
?> 

如果錯誤,請將文件權限更改爲777或775.希望這可能有所幫助。

+0

當我嘗試時,仍然出現錯誤。我發佈了上面的錯誤。 –

+0

上面的代碼在普通的.txt文件中工作正常。是否有可能您要閱讀的文件不是文件(根據您的鏈接,它看起來像是在嘗試閱讀文件夾),或者可能是.php或.aspx文件?如果是這樣,你不能得到.php文件。 –

+0

是的,它是一個txt文件,但由於某種原因,無論我嘗試什麼,我仍然得到錯誤。 –

3

如果你已經打開通過FTP_CONNECT的連接,這可能會是最好的答案:

ob_start(); 
$result = ftp_get($conn_id, "php://output", $file, FTP_BINARY); 
$data = ob_get_contents(); 
ob_end_clean(); 
2

file_get_contents是最簡單的解決方案:

$contents = file_get_contents('ftp://username:pa‌​[email protected]/path/to/file'); 

如果它不工作,這可能是因爲你沒有URL wrappers enabled in PHP


如果您需要在閱讀更多的控制(傳輸模式,被動模式,偏移,讀限制等),使用ftp_fget帶有把手的php://temp (or the php://memory) stream

$conn_id = ftp_connect('hostname'); 

ftp_login($conn_id, 'username', 'password'); 

$h = fopen('php://temp', 'r+'); 

ftp_fget($conn_id, $h, '/path/to/file', FTP_BINARY, 0); 

$fstats = fstat($h); 
fseek($h, 0); 
$contents = fread($h, $fstats['size']); 

fclose($h); 
ftp_close($conn_id); 

(添加錯誤處理)

相關問題