Удаленный файл должен быть сначала загружен на ваш сервер, прежде чем вы сможете отправить его пользователю.Это невидимо для пользователя, но у вас нет выбора.PHP не позволяет браузеру напрямую общаться с FTP-сервером.
Создайте отдельный скрипт php, который вызывает ftp_get для определенного файла, временно сохраняет его на вашем сервере, чтобы позволить пользователю загрузить его.
Что-то вроде:
<?php
//assume the page was called like download.php?filename=downloaded.pdf
header('Content-Disposition: attachment; filename="'.$_GET['filename'].'"');
$tempFile = 'temp'.rand();
ftp_get($ftp, $tempFile, $_GET['filename'], FTP_BINARY);
readfile($tempFile);
Вы также можете добавить код для удаления tempFile.