我使用scp将文件传输到远程服务器,如下所示:
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
ssh2_scp_send($connection, '/local/filename', '/remote/filename', 0644);
对于大多数服务器,这很好用。但是,一个远程服务器的传输文件存在问题,该文件已被标记为不完整。
我在Files sent with ssh2_scp_send() are incomplete on remote server找到了解决方案。
我只需要添加
ssh2_exec($connection, 'exit');
但是,在我进行此更改后,其他一些远程服务器似乎不支持exit命令。这将导致php警告:
PHP Warning: ssh2_exec(): Unable to request command execution on remote host in FILE.php on line XX
有谁知道这个问题的解决方案?显然,我可以忽略或压制警告。然而,这在某种程度上是错误的,特别是因为代码的其余部分是免费的。
答案 0 :(得分:0)
您是否可以通过CLI向服务器发送此错误消息?:
PHP Warning: ssh2_exec(): Unable to request command execution on remote host in FILE.php on line XX
可能是ssh2_scp_send()
正在通过shell执行此操作并且ssh2_exec()
正在通过系统exec
调用(它们是不同的东西)并且您的服务器支持一个但不是另一个。能够将日志视为phpseclib's SCP implementation提供它们会有所帮助,但是唉,libssh2不生成日志..