Код: Выделить всё
$connectionId = ftp_ssl_connect($server, 21, 15);
if ($connectionId === false) {
throw new Exception("Could not connect to server via FTPs.");
}
echo "Connected".PHP_EOL;
if (!ftp_login($connectionId, $username, $password)) {
throw new Exception("Unable to authenticate with server.");
}
echo "Login".PHP_EOL;
if (!ftp_pasv($connectionId, true)) {
throw new Exception("Could not turn on passive mode.");
}
echo "Passive".PHP_EOL;
$path = '.';
if (!ftp_chdir($connectionId, $path)) {
throw new Exception("Could not change to directory ".$path.". Current directory :".ftp_pwd($connectionId));
}
echo "Chdir".PHP_EOL;
$filename = './test.txt';
if (!ftp_put($connectionId, basename($filename), $filename)) {
throw new Exception("Could not upload file to server.");
}
Предупреждение PHP: ftp_put (): data_accept: не удалось получить существующий
сеанс SSL в ...
Предупреждение PHP: ftp_put(): принято соединение для передачи данных в...Неустранимая ошибка PHP: неперехваченное исключение: не удалось загрузить файл на
сервер.
Когда я делаю то же самое через PHP вызовы Curl или даже с обёрткой потока (fwrite) всё работает нормально.
С сертификатом всё в порядке, сервер использует TLS1.3, пробовал разные контексты, но ничего не работает. В исходном коде php я вижу, что сообщение об ошибке появляется, когда PHP пытается использовать последний сеанс, который имеет значение NULL.
Может ли кто-нибудь мне помочь? Это базовая вещь, которая не работает с ftp_put, может быть из-за неявного FTP через TLS?
Обновить
Я обнаружил, что файл создается на сервере, но имеет 0 байт.
Подробнее здесь: https://stackoverflow.com/questions/790 ... sl-session
Мобильная версия