我的本地电脑中有一个文件。
ls -al /tmp/back.tar.gz
-rw-r--r-- 1 root root 11219553 Nov 29 23:13 /tmp/back.tar.gz
让我们将带有ssh2_scp_send的back.tar.gz上传到我的远程vps中。
<?php
$vps_ip= 'xxxx';
$port = 'yyyy';
$user = 'root';
$passwd = 'zzzz';
$connection = ssh2_connect($vps_ip, $port);
ssh2_auth_password($connection,$user,$passwd);
ssh2_scp_send($connection,'/tmp/back.tar.gz','/home/back.tar.gz');
?>
使用ssh -p yyyy root@xxxx
登录ssh,在我的vps中执行ls命令。
ls -al /home/back.tar.gz
-rw-r--r-- 1 root root 11206656 Nov 29 10:10 /home/back.tar.gz
剩下的12897个字节在哪里?
现在我在我的本地电脑上将文件/tmp/back.tar.gz上传到远程vps第二次,当php程序执行时。
使用ssh -p yyyy root@xxxx
登录ssh,在我的vps中执行ls命令。
ls -al /home/back.tar.gz
-rw-r--r-- 1 root root 11219505 Nov 29 10:10 /home/back.tar.gz
我认为ssh2_scp_send函数中存在一个错误,它不稳定。 我已经用scp命令测试了三次:
scp -P $port root@$vps_ip:/home/back.tar.gz /tmp
使用ssh -p yyyy root@xxxx
登录ssh,在我的vps中执行ls命令。
ls -al /home/back.tar.gz
-rw-r--r-- 1 root root 11219553 Nov 29 10:10 /home/back.tar.gz
我的结论是ssh2_scp_send函数中的一些错误。
答案 0 :(得分:0)
缓冲区在这里工作。
Enable Source Control
在关闭连接之前在缓冲区中写入字节。