Home » Php » php – Files sent with ssh2_scp_send() are incomplete on remote server

php – Files sent with ssh2_scp_send() are incomplete on remote server

Posted by: admin July 12, 2020 Leave a comment

Questions:

I transfer files with PHP and SSH2 to an remote server.

I use this:

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

But sometimes the file on the remote server is incomplete. I have the assumption that SSH2 doesn’t transfer the EOF or anything else.

Do you have any ideas or solutions?

How to&Answers:

The problem is that you don’t close the SSH session. So the internal buffers aren’t flushed and the files aren’t written to disk fully.

Here is a workaround – just close the session with:

ssh2_exec($connection, 'exit');

This will cause all buffers to be flushed and your files should be transfered completely.

Hope, that helps.