Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Files sent with ssh2_scp_send() are incomplete on remote server

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?

like image 756
Simon Stamm Avatar asked Oct 16 '11 15:10

Simon Stamm


1 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.

like image 135
msiemens Avatar answered Oct 12 '22 23:10

msiemens