2012-07-17 80 views
4

我試圖從本地PC上傳圖像文件到遠程服務器。圖片來自於一個簡單的HTML輸入(類型=文件),文件數組包含這些:php ftp_put不會創建文件

Array ([name] => image42.jpg [type] => image/jpeg [tmp_name] => C:\wamp\tmp\phpBB52.tmp [error] => 0 [size] => 6051) 

正如你看到的,我的本地PC使用的是Windows。它試圖上傳的圖像文件的代碼如下:

$conn_id = ftp_connect($ftp_server, $ftp_port); 

$login_result = ftp_login($conn_id, $ftp_username, $ftp_password); 

if(!ftp_chdir($conn_id, $folder_path)) 
{ 
    $create_folder = ftp_mkdir($conn_id, $folder_path); 
    ftp_chmod($conn_id, 0777, $folder_path); 
} 

這完全連接到服務器,甚至創建一個文件夾,如果不是存在了。然後,當我們得到的上裝部分,

ftp_pasv($conn_id, true); 

// upload a file 
$upload = ftp_put($conn_id, $new_dir, $file_dir, FTP_BINARY); 

變量$upload得到false。 (即文件的tmp_name)。

$new_dir包含圖像路徑遠程目錄:img.example.com/data/images/blabla.jpg

而且,返回錯誤是:

Warning: ftp_put() [<a href='function.ftp-put'>function.ftp-put</a>]: Could not create file. in C:\wamp\www\example\example.php on line 95 

我還沒有發現任何有用的既不是谷歌,也不StackOverflow上。可能是什麼原因?

+1

查看您的文件權限 – 2012-07-17 08:12:19

+0

哪裏?它在遠程服務器上都是777。另外,我在Windows上登錄的用戶具有管理員權限。 – gzg 2012-07-17 08:13:49

+0

'bool ftp_put(資源$ ftp_stream,字符串$ remote_file,字符串$ local_file,int $模式)' - 不混合參數?第二是遠程文件,第三是本地文件,但在你的例子中,你使用本地上傳的第二和第三作爲遠程? – Laimoncijus 2012-07-17 08:31:38

回答

3

這對我有效。它可能是服務器的根目錄不同於FTP根目錄。

嘗試使用另一個程序登錄到您的FTP帳戶並檢查根目錄。例如,我的FTP根目錄是/public_html/,但服務器是/home/cms/public_html/。因此,如果我的文件的遠程目標設置爲/home/cms/public_html/images/82.jpg,請將其更改爲/public_html/images/82.jpg

0

我的腳本試圖定期上傳一個文件到FTP位置(用相同的名稱覆蓋以前上傳的文件)並且工作正常。

它現在開始顯示此錯誤,並且我從FTP位置刪除了該文件,並使用該腳本再次將其上載,並且錯誤消失。

該文件必須已被FTP位置中的任何其他應用程序鎖定,以防止其覆蓋或可能已損壞。