ftp_size возвращает -1 после загрузки файла с помощью curl - PullRequest
0 голосов
/ 18 сентября 2018

Мой скрипт упаковывает некоторые файлы в ZIP, а затем загружает этот ZIP на другой сервер.После загрузки он проверяет размер ZIP на FTP и локально.Если размеры одинаковы - локальный ZIP удаляется.

Проблема в ftp_size() возвращает -1.Но только в реальном сценарии.В моем тестовом скрипте он работает нормально.

Тестовый скрипт работает следующим образом:

$f = ftp_connect(HOST);
$res = ftp_login($f, USER, PASS); 
$fname = 'archive_2018-09-18_13-39';
$fsize = ftp_size($f, "$fname-img.zip").''; 
$fsize2 = filesize("backup/$fname-img.zip").''; 
echo $fsize . '<br>' . $fsize2;

и возвращает:

22907946995
22907946995

Реальный скрипт работает так:

$f = ftp_connect(HOST);
$res = ftp_login($f, USER, PASS); 
$fname = 'archive_' . date('Y-m-d_H-i');

exec("zip -r -0 backup/$fname-img.zip  \"website\" 2>&1");
exec('curl -T "' . "backup/$fname-img.zip" . '" ftp://' . HOST . ' --user ' . USER . ':' . PASS . ' 2>&1');

$fsize = ftp_size($f, "$fname-img.zip").''; 
$fsize2 = filesize("backup/$fname-img.zip").''; 
echo $fsize . '<br>' . $fsize2;

и показывает:

-1
22907946995

Реальный скрипт просто отлично загружает файл.Он просто не показывает правильный размер на FTP-сервере.Так что это не проблема с размером файла и не проблема с FTP-соединением.

1 Ответ

0 голосов
/ 18 сентября 2018

Попробуйте переместить ftp_connect только после вызова на curl.Возможно, существует некоторое кэширование, которое не позволяет FTP-серверу немедленно возвращать правильный размер, если файл загружен с использованием другого соединения.


Хотя я настоятельно рекомендую вам использовать функции PHP для загрузкифайл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...