2014-02-20 7 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

Try позволяет track_errors и доступ $php_errormsg

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

Также проверьте, что возвращает error_get_last() – LONGMAN

+0

Я пробовал это, и я получаю длинную версию пути моего ftp-сервера и слова NULL в конце. – user2469133

+0

Я использую бесплатный хост calle bytehost.com, может быть, что deny php write permissions? – 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); 
Смежные вопросы