Файлы, отправленные с помощью ssh2_scp_send (), являются неполными на удаленном сервере - PullRequest
6 голосов
/ 16 октября 2011

Я передаю файлы с помощью PHP и SSH2 на удаленный сервер.

Я использую это:

$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
ssh2_scp_send($connection, '/local/filename', '/remote/filename', 0644);

Но иногда файл на удаленном сервере является неполным.У меня есть предположение, что SSH2 не передает EOF или что-либо еще.

У вас есть какие-либо идеи или решения?

1 Ответ

17 голосов
/ 16 октября 2011

Проблема в том, что вы не закрываете сеанс SSH.Таким образом, внутренние буферы не сбрасываются, а файлы не записываются на диск полностью.

Вот обходной путь - просто закройте сеанс с помощью:

ssh2_exec($connection, 'exit');

Это вызовет все буферычтобы быть сброшены и ваши файлы должны быть полностью переданы.

Надеюсь, это поможет.

...