Я не могу загружать файлы на свой ftp-сервер.
Всегда есть предупреждение:
ftp_put(): подключение к порту.
<?php
set_time_limit(0);
$host = 'xxxx';
$usr = 'yyyy';
$pwd = 'zzzz';
$local_file = '/home/back.sql';
$ftp_path = '/public_html/';
$conn_id = ftp_connect($host, 21) or die ("Cannot connect to host");
ftp_login($conn_id, $usr, $pwd) or die("Cannot login");
$upload = ftp_put($conn_id, $ftp_path.'back1.sql', $local_file, FTP_ASCII);
print($upload);
?>
Код выполнялся три раза. У меня было три разных предупреждения.
Предупреждение: ftp_put(): подключение к порту 1926 в имени файла (я назвал его) в строке 10
Предупреждение: ftp_put(): подключение к порту 1928 в имени файла (я назвал его) в строке 10
Предупреждение: ftp_put(): подключение к порту 1930 в имени файла (я назвал его) в строке 10
"Соединение с портом xxx" - это сообщение, выданное сервером PureFTPD, когда он пытается подключиться к FTP-клиенту к порту подключения к данным активного режима (который является случайным, поэтому он изменяется).
Если вам действительно нужно использовать активный режим, вам необходимо разрешить входящие подключения к диапазону портов подключения к активному режиму, используемому PHP.
См. Мой справочник по настройке сети, необходимой для FTP в активном режиме.
Хотя, если вам не нужно использовать активный режим, вместо этого используйте пассивный режим. Пассивный режим обычно не требует конфигурации сети на стороне клиента.
В PHP вы переключаетесь в пассивный режим, вызывая функцию ftp_pasv
после ftp_login
:
...
ftp_login($conn_id, $usr, $pwd) or die("Cannot login");
ftp_pasv($conn_id, true) or die("Cannot switch to passive mode");
...
См. Приведенное выше руководство, чтобы понять разницу между активным и пассивным режимами FTP.