Сбой PHP ftp_put: анализ проблемы и ее решение
Неспособность ftp_put() работать правильно может стать неприятной проблемой при передаче файлы по FTP. В PHP распространенная причина этой проблемы заключается в использовании активного режима по умолчанию.
Передача в активном и пассивном режиме
Активный режим требует подключения FTP-сервера клиенту по указанному порту. С другой стороны, в пассивном режиме сервер прослушивает случайный порт, который затем предоставляется клиенту. В большинстве случаев использование пассивного режима необходимо, особенно если FTP-сервер находится за брандмауэром или NAT.
Решение проблемы
Чтобы переключить FTP-передачу PHP в пассивный режим режиме необходимо вызвать функцию ftp_pasv():
$connect = ftp_connect($ftp) or die("Unable to connect to host");
ftp_login($connect, $username, $pwd) or die("Authorization failed");
// Switch to passive mode
ftp_pasv($connect, true) or die("Unable switch to passive mode");
Дополнительные рекомендации
В некоторых случаях FTP-сервер может сообщать о неправильном IP-адрес в ответ на команду PASV. Эту проблему можно решить, отключив использование адреса PASV:
ftp_set_option($connect, FTP_USEPASVADDRESS, false);
Рекомендации
Хотя приведенные выше решения могут облегчить проблему, оптимальным решением является настройка FTP-сервера на использование правильного IP-адреса и конфигурация порта. Это обеспечивает правильную работу во всех сценариях.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3