Как я могу проверить, когда должен использоваться ftp_pasv?

Как обсуждалось в этот вопрос, У меня проблема с 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 прервана клиентом.

1

Решение

Вы не можете это проверить. В основном это часть информации о сеансе (вместе с именем хоста, именем пользователя и паролем), которую вы должны знать заранее.

Хотя очевидно, что есть только два режима, вы можете попробовать один и отступить на другой, если первый не удастся.

Сначала я бы попробовал пассив (так как это имеет тенденцию работать чаще) и откат к активному.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]