Как обсуждалось в этот вопрос, У меня проблема с ftp_fget
чтобы загрузить файл с FTP, когда я в локальной среде разработки:
Предупреждение: ftp_fget (): открытие подключения к данным в двоичном режиме для
myFile.csv
Как и предполагалось, используйте ftp_pasv($conn_id, TRUE);
работает очень хорошо, но я не хочу использовать пассивный режим FTP, когда я на моем рабочем сервере.
Как я могу проверить, когда ftp_pasv
должен быть использован ?
Я попробовал это:
<?php
$conn_id = ftp_connect(FTP_SERVER, FTP_PORT, 30);
$handle = fopen(dirname(__FILE__).'/data/temp.csv', 'w');
if (ftp_fget($conn_id, $handle, FTP_FILENAME, FTP_BINARY, 1)) {
copy($handle,dirname(__FILE__).'/data/myFile.csv');
}
else {
// Try with passive mode
ftp_pasv($conn_id, TRUE);
if (ftp_fget($conn_id, $handle, FTP_FILENAME, FTP_BINARY, 1)) {
copy($handle,dirname(__FILE__).'/data/myFile.csv');
}
else {
echo "Error downloading the file";
}
}
ftp_close($conn_id);
Но это дает мне:
Предупреждение: ftp_fget (): соединение с данными неожиданно закрыто, файл
передача /myFile.csv прервана клиентом.
Вы не можете это проверить. В основном это часть информации о сеансе (вместе с именем хоста, именем пользователя и паролем), которую вы должны знать заранее.
Хотя очевидно, что есть только два режима, вы можете попробовать один и отступить на другой, если первый не удастся.
Сначала я бы попробовал пассив (так как это имеет тенденцию работать чаще) и откат к активному.
Других решений пока нет …