Мой скрипт упаковывает некоторые файлы в 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-соединением.