在PHP中传输SCP时发出警告

时间:2013-04-18 09:33:06

标签: php scp

我使用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

有谁知道这个问题的解决方案?显然,我可以忽略或压制警告。然而,这在某种程度上是错误的,特别是因为代码的其余部分是免费的。

1 个答案:

答案 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不生成日志..