Код: Выделить всё
$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 байт.
Update2
После подсказки в комментариях попробовал следующий код:
Код: Выделить всё
$filename = './test.txt';
$filenameNew = './test_new.txt';
if (ftp_rename($connectionId, $filename, $filenameNew)) {
echo "successfully renamed $filename to $filenameNew\n";
} else {
echo "There was a problem while renaming $filename to $filenameNew\n";
print_r( error_get_last() );
}
Код: Выделить всё
successfully renamed ./test.txt to ./test_new.txt
PHP Warning: PHP Request Shutdown: SSL_read on shutdown: error:0A000126:SSL routines::unexpected eof while reading in Unknown on line 0
Подробнее здесь: https://stackoverflow.com/questions/790 ... sl-session
Мобильная версия