2013-04-23 117 views
2

我需要自動從本地計算機上傳文件到遠程服務器。我發現這裏對下面的代碼:使用php上傳FTP文件

<?php 
require_once('ftp.php'); 

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

// upload a file 
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) { 
    echo "successfully uploaded $file\n"; 
    exit; 
} else { 
    echo "There was a problem while uploading $file\n"; 
    exit; 
} 
// close the connection 
ftp_close($conn_id); 
?> 

ftp.php是我的文件與FTP認證信息。連接工程,但我收到以下錯誤:

There was a problem while uploading C:/xampp/htdocs/testbcos/accounting/checkslastmonth.csv 

編輯:我amnot知道這是否有差別或沒有,但這裏是我的$ remote_file和我的$文件:

$file = "C:/xampp/htdocs/testbcos/accounting/checkslastmonth.csv";//tobe uploaded 
$remote_file = "/home/bookcell/public_html/testbcos/accounting/checkslastmonth3.csv"; 

什麼我在這裏做錯了嗎?另外,如果文件位於本地服務器的映射驅動器上,是否可以執行此操作? 謝謝。

+0

檢查遠程目錄是否有權限上傳文件? – Ranjith 2013-04-23 12:54:37

+0

爲了測試目的,遠程目錄擁有777的權限,並且我刷新了該目錄並再次嘗試了相同的錯誤,所以我認爲這不是問題 – Jim 2013-04-23 12:57:25

+0

仍然是正確的方式。很可能用戶沒有正確的權限來訪問遠程服務器.. – Ranjith 2013-04-23 13:02:46

回答

1

第一件事:嘗試設置被動模式。如果你坐在防火牆後面,你需要它。 (大概是什麼情況)

ftp_pasv($conn_id, true); // after ftp_login 

其次,你必須改變爲DIR第一:如果你想知道到底發生了什麼對

ftp_chdir($conn_id, '/home/bookcell/public_html/testbcos/accounting/'); 
ftp_put($conn_id, 'checkslastmonth3.csv', $file, FTP_ASCII); 

,試圖讓錯誤消息error_get_last()$php_errormsg

+0

我看了看服務器的錯誤日誌,並得到這個:[STDERR] PHP警告:ftp_put(C:/xampp/htdocs/testbcos/accounting/checkslastmonth.csv)[function.ftp-put]:無法打開流:沒有這樣的文件或目錄在/ 19行/chroot/home/bookcell/bookcellaronline.com/html/testbcos/accounting/ftpUpload.php我想我註定不要讓這個工作 – Jim 2013-04-23 14:52:06

+0

嘗試使用'$ file = realpath獲取本地文件( __DIR __)。DIRECTORY_SEPARATOR.'checkslastmonth.csv';'否則錯誤很明顯:本地文件是否真的存在於該位置? – bitWorking 2013-04-23 14:57:54

+0

@Jim所以它看起來像你在服務器上運行腳本,並想從你上傳文件是本地機器?難道你需要一個HTML上傳腳本,而不是一個FTP上傳? – bitWorking 2013-04-23 15:01:45