【问题标题】:How can I write a file on an sftp-server with PHP?如何使用 PHP 在 sftp 服务器上编写文件?
【发布时间】:2010-06-18 08:59:08
【问题描述】:

我希望这里有人可以帮助我,因为我无法通过 Google 找到任何解决方案。我要做的是生成一个 XML 字符串(有效),并将其直接保存到 sftp 服务器上的文件中。

到目前为止,一切都很好...我在 ftp 中使用了以下代码,它适用于,但不适用于 ftps。所以我要么需要另一个选项配置流,要么需要一种不同的方式来解决该任务。

这是我当前的代码:

$host = 'ftp.example.com';

$port = 22;

$user = 'xxxxxx';

$pass = 'xxxxxx';

$file    = 'test_' . time() . '.txt';

$ftpPath = sprintf('ftp://%s:%s@%s:%d/%s', $user, $pass, $host, $port, $file);

$context = stream_context_create(array('ftp' => array('overwrite' => true)));

file_put_contents($ftpPath, 'test', 0, $context);

【问题讨论】:

  • 你应该在每一个代码行之前添加 4 个空格,以使其清晰可读。
  • 哦,是的,我的代码崩溃了,抱歉。它修复了。

标签: php upload ftps


【解决方案1】:

您需要一个已编译的支持 OpenSSL 的 PHP。然后,使用 ftps:// 而不是 ftp://。 More info on FTPS.

【讨论】:

  • OpenSSL 支持已启用,我已经尝试过使用 ftps,但显然服务器是 sftp。这有关系吗?
  • 是的。 SFTP 与 FTPS 完全不同。
【解决方案2】:

使用ssh2.sftp:// 而不是ftp://。见ssh2_sftp

【讨论】:

  • 好吧,这似乎是正确的方法,但它变得有点复杂。
【解决方案3】:

更简单的解决方案是将文件保存在临时目录中,然后执行 shell 命令以实际发送文件。

【讨论】:

  • 好的,我也想过,但如果可能的话,我想避免这种情况,因为这可能会导致其他问题。
猜你喜欢
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 2014-08-22
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
相关资源
最近更新 更多