2013-08-22 17 views
5

İki sunucum var. Bağlandığım dosyada zaten bir .txt dosyası var.PHP: FTP sunucusundan .txt dosyasını bir değişkene nasıl okurum?

.txt dosya içeriğini almalı ve bunları bir $ değişkenine koymam gerekir. İşte çalışmıyor benim kodudur:

$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); 

Bu kod FTP bağlanır ve ben bir değişken olarak adlandırılan $ içeriğe bir metin dosyasına kopyalamak ftp_get kullandı. Bir değişkenin bu parametreye ait olmadığını biliyorum, ancak şu anda satıldım. Bu .txt dosyasını nasıl okuyacağımı bilmiyorum.

PHP FTP işlevleriyle bunu yapmanın bir yolu var mı?

Teşekkür

Şimdi

, ben bu deneyin:

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

Bu .txt dosya normal bir dosya olmadığını söyleyen bir 550 hata veriyor. Neden bu hatayı alıyorum? (: - Cappucci Ryan/queen.txt 22-08-2013/# 11 ftp://[email protected]/101Notebook Yedekleme) [fonksiyonu:

Uyarı: Fopen Burada yine

teşekkürler alıyorum resmi hatadır .fopen]: akışı açamadı: FTP sunucusu raporları 550/101Notebook Backup: 22-08-2013 /: normal bir dosya /home/content/34/11614434/html/adminpdo.php satırında değil 269

+0

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

+0

Yukarıdakileri yaptığımda ve .txt dosyama yönlendirdiğimde normal bir dosya olmadığını söyleyerek 550 hata veriyor. –

cevap

10

Bunu deneyin, bu kod şu adresten 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; 
?> 

Hata varsa, lütfen dosyayı 777 veya 775'e değiştirin. Umarım yardımcı olabilir. Zaten ftp_connect aracılığıyla bir bağlantı açtıysanız

+0

Bunu denediğimde hala hata alıyorum. Yukarıdaki hatayı yayınladım. –

+0

Yukarıdaki kod, sıradan .txt dosyasıyla düzgün çalışıyor.Okuyacağınız dosya bir dosya değil (linkinizden, bir klasörü okumaya çalışıyormuş gibi görünebilir) ya da .php veya .aspx dosyası olabilir mi? Eğer öyleyse bu .php dosyasını alamıyorsunuz. –

+0

Evet, bu bir txt dosyasıdır, ancak nedense denediğim bir şey yok, hatayı hala aldım. –

3

, bu muhtemelen en iyi cevap olacaktır:

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

file_get_contents en kolay çözümdür:

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

işe yaramazsa

, Muhtemelen URL wrappers enabled in PHP'un olmaması nedeniyle. Okuduğunuz üzerinde daha fazla kontrol (transfer modu, pasif mod, ofset, okuma limiti, vs) ihtiyaç


, php://temp (or the php://memory) stream bir kulplu ftp_fget kullanın:

$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); 

(ekleme hata işleme)

İlgili konular