0

我使用 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 complete on remote server中的解决方案。

我只需要添加

ssh2_exec($connection, 'exit');

但是,在我进行此更改后,其他一些远程服务器似乎不支持退出命令。这将导致一个 php 警告:

PHP Warning:  ssh2_exec(): Unable to request command execution on remote host in FILE.php on line XX

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

4

1 回答 1

0

你能通过 CLI SCP 到服务器给出这个错误消息吗?:

PHP Warning:  ssh2_exec(): Unable to request command execution on remote host in FILE.php on line XX

可能是ssh2_scp_send()通过 shellssh2_exec()执行此操作,并且通过系统exec调用执行此操作(它们是不同的东西)并且您的服务器支持一个但不支持另一个。能够将日志视为phpseclib 的 SCP 实现提供的日志会有所帮助,但可惜的是,libssh2 不会生成日志。

于 2013-05-02T19:08:13.553 回答