Когда-то в PHP-земле была нормальная ошибка:
Предупреждение: ftp_nlist (): data_accept: сбой рукопожатия SSL / TLS в [пути] в строке 29
Но вот в чем загвоздка: «строка 29» — это не соединение или логин, обратите внимание, как оно ссылается на ftp_nlist()
функция:
$ftp = ftp_ssl_connect($cred['host'], $cred['port'], 180);
if (!ftp_login($ftp, $cred['user'], $cred['pass'])) {die("Login Failed");}
ftp_pasv($ftp, true);
$files = ftp_nlist($ftp, '');
OpenSSL скомпилирован и включен в phpinfo()
как предложено здесь:
ftp_login (): сбой рукопожатия SSL / TLS
Другие посты, которые я видел, похоже, содержат ссылку на ошибку в ftp_ssl_connect()
или же ftp_login()
команды, которые работают для меня. Что я могу проверить, когда ftp_login()
возвращает истину?
Или … есть какие-нибудь журналы, чтобы получить более подробную информацию о том, что не так?
12-28-2017 обновление:
Обновление до 5.6 решено, так что, похоже, Мартин на подходе.
ftp_nlist
открывает соединение для передачи данных. Для этого соединения также требуется рукопожатие TLS / SSL.
После успешного установления связи между управляющими соединениями проблема действительно не может заключаться в отсутствии поддержки TLS / SSL в PHP. Ни одна из проблем не может быть связана с тем, что сервер и PHP не могут найти шифр для согласования.
Когда рукопожатие TLS / SSL на соединении данных завершается неудачно после успешного установления связи на управляющем соединении, это обычно происходит потому, что клиент (PHP) не использовал повторно сеанс TLS / SSL из управляющего соединения на соединении для передачи данных (см. Почему повторное использование сессии полезно в FTPS?). Некоторые серверы требуют этого. PHP поддерживает повторное использование только с 5.6.26. Увидеть PHP Bug 70195. Поэтому убедитесь, что вы используете эту версию PHP как минимум.
Других решений пока нет …