【问题标题】:Files sent with ssh2_scp_send() are incomplete on remote server使用 ssh2_scp_send() 发送的文件在远程服务器上不完整
【发布时间】:2011-12-08 18:19:47
【问题描述】:

我使用 PHP 和 SSH2 将文件传输到远程服务器。

我用这个:

$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
ssh2_scp_send($connection, '/local/filename', '/remote/filename', 0644);

但有时远程服务器上的文件不完整。我假设 SSH2 不会传输 EOF 或其他任何东西。

您有什么想法或解决方案吗?

【问题讨论】:

  • 是否启用错误报告?如果出现问题,您会看到消息吗?

标签: php ssh file-transfer


【解决方案1】:

问题在于您没有关闭 SSH 会话。所以内部缓冲区不会被刷新,文件也不会完全写入磁盘。

这是一种解决方法 - 只需使用以下命令关闭会话:

ssh2_exec($connection, 'exit');

这将导致所有缓冲区被刷新并且您的文件应该被完全传输。

希望,这会有所帮助。

【讨论】:

  • 完美!这成功了,现在它完美地工作了。谢谢!
  • 欢迎来到 Stack Overflow!完全题外话:您的主页在 Chrome 14 中有一些奇怪的 Umbrüche,例如Pr-ogrammiersprachenNebenb-eruflich。不知道为什么,但我想你可能想知道。 @Simon 如果此答案对您有用,请考虑使用复选标记符号将其标记为已接受。
  • 谢谢 Pekka,但我必须等待 5 分钟才能接受。 :-)
  • @Pekka:我使用code.google.com/p/hyphenator 自动添加连字符。但这确实似乎是一个奇怪的连字符。只是无法在 Chrome 14 中确认。(检查过,连字符是正确的......)
  • 嗯...伙计们,你们似乎来自同一个地方。虽然如果你们是朋友,回答彼此的问题是完全可以的,但这不是完全应该如何运作的,并且在为彼此投票时要小心。他们有脚本来检测这种事情。
猜你喜欢
  • 2011-09-03
  • 2014-06-10
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多