ftp_nlist (): data_accept: сбой рукопожатия SSL / TLS

Когда-то в 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 решено, так что, похоже, Мартин на подходе.

1

Решение

ftp_nlist открывает соединение для передачи данных. Для этого соединения также требуется рукопожатие TLS / SSL.

После успешного установления связи между управляющими соединениями проблема действительно не может заключаться в отсутствии поддержки TLS / SSL в PHP. Ни одна из проблем не может быть связана с тем, что сервер и PHP не могут найти шифр для согласования.

Когда рукопожатие TLS / SSL на соединении данных завершается неудачно после успешного установления связи на управляющем соединении, это обычно происходит потому, что клиент (PHP) не использовал повторно сеанс TLS / SSL из управляющего соединения на соединении для передачи данных (см. Почему повторное использование сессии полезно в FTPS?). Некоторые серверы требуют этого. PHP поддерживает повторное использование только с 5.6.26. Увидеть PHP Bug 70195. Поэтому убедитесь, что вы используете эту версию PHP как минимум.

1

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

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