Я пытаюсь отправить файлы (PDF) с веб-сервера (UNIX) на сервер Windows в office, используя функцию PHP, работающую на веб-сервере. FTP установлен на сервере Windows.
Функция подключается к офисному серверу и регистрируется нормально. Однако, как только функция пытается что-либо сделать (например, просмотреть содержимое каталога офисного сервера), я получаю сообщение об ошибке (например... ftp_nlist(): php_connect_nonb() не удалось: операция сейчас выполняется (115)). Сервер назначения регистрирует ошибку: [Сервер администрирования] Не удалось привязаться к 192.168.1.1:14148. Причина: EADDRINUSE — используется локальный адрес. Повторная попытка через 1 секунду. Я пытался найти эти ошибки, но не смог найти ничего, что мне помогло бы.
Соединение должно быть пассивным и на основе других ответов в SO. Я считаю, что важно остановить пассивный режим с использованием неправильного IP-адреса. Так что это тоже там сейчас (
Код: Выделить всё
ftp_set_option($ftp_conn, FTP_USEPASVADDRESS, false)У меня возникает та же проблема при использовании SSL-соединения или соединения без SSL.
Мне удалось получить ответ на ftp_systype, который сообщает мне «UNIX».
Другие люди говорили на SO о периодических проблемах, которые вызывают эту ошибку (например, «php_connect_nonb() error: операция сейчас»). в процессе (115)" происходит с перерывами), но для меня это постоянная ошибка. Я проверил, и FTP-сервер настроен на возврат внешнего IP-адреса при установленном пассивном режиме. Я также понимаю, что в старых версиях PHP были некоторые проблемы. У меня на веб-сервере установлен PHP v7.4.
Я могу без проблем подключаться (и копировать файлы) с помощью Filezilla и WinSCP, но не при использовании функции PHP.
Функция PHP содержит:
Код: Выделить всё
$ftp_conn = ftp_ssl_connect($ftp_server, $ftp_port); // response is resource(2) of type (FTP Buffer)
$login = ftp_login($ftp_conn, $username, $password);
$result = ftp_set_option($ftp_conn, FTP_USEPASVADDRESS, false);
$result = ftp_pasv($ftp_conn, true);
echo '
The system type is: '.ftp_systype($ftp_conn); // The system type is: UNIX
$already_there = ftp_nlist($ftp_conn, '.'); // this triggers the error!
Заранее большое спасибо!
Подробнее здесь: https://stackoverflow.com/questions/716 ... tion-now-i