2014-02-20 115 views
1

據我所知,ftp_put方法上傳從本地服務器計算機中的文件到FTP服務器,但我使用它有問題的地方,當我試圖執行一個簡單的腳本是這樣的:PHP上傳本地文件到FTP服務器

<?php 
// connect and login to FTP server 
$ftp_server = "ftp.example.com"; 
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server"); 
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass); 
$file = "localfile.txt"; 
// upload file 
if (ftp_put($ftp_conn, "serverfile.txt", $file, FTP_ASCII)) 
{ 
echo "Successfully uploaded $file."; 
} 
else 
{ 
echo "Error uploading $file."; 
} 

// close connection 
ftp_close($ftp_conn); 
?> 

該操作成功完成,除了上傳到我的FTP服務器的文件始終爲零字節大小!

另外我試圖啓用被動模式,但它仍然上傳一個空文件。

回答

0

嘗試啓用track_errors和訪問$php_errormsg

ini_set('track_errors', 1); 
// put operation 
// if error 
var_dump($php_errormsg); 
+0

另請檢查是什麼返回error_get_last() – LONGMAN

+0

我試過了,最後我得到了我ftp服務器的路徑和一個空字的長版本。 – user2469133

+0

我使用的是免費主機calle bytehost.com,難道是拒絕php寫入權限? – user2469133

0

我有同樣的問題。當我將「FTP_ASCII」更改爲「FTP_BINARY」時,它解決了我的問題,並按預期上傳了文件。

0

我也遇到過這個問題。有點晚了,但想到我會發布我的解決方案:

$file_name = "localfile.txt"; 

從現有文件

$content = file_get_contents('http://www.somewhere.com/'.$file_name); 

獲取內容......或者做臨時文件內容

$content = "This is content"; 

上傳文件

// connect 
$conn_id = ftp_connect($host); 
$login = ftp_login($conn_id, $username, $password); 
ftp_pasv($conn_id, true); 

// create 
$tmp = fopen(tempnam(sys_get_temp_dir(), $file), "w+"); 
fwrite($tmp, $content); 
rewind($tmp); 

// upload 
$upload = ftp_fput($conn_id, "serverfile.txt", $tmp, FTP_ASCII); 

// close 
ftp_close($conn_id);