【问题标题】:Secure FTP Connection using PHP使用 PHP 的安全 FTP 连接
【发布时间】:2011-01-11 08:38:00
【问题描述】:

我有一个带有登录详细信息和来自 PHP 的安全 FTP 服务器,我正在尝试使用 ftp_ssl_connect/ftp_connectftp_login 函数连接到该安全 FTP 服务器,并将所有参数正确传递给该函数,但我很惊讶地看到它没有连接。

如果我尝试使用 ssh 从命令行连接到该安全 FTP 服务器,我可以这样做,但是当我尝试通过 php 代码连接时,它无法连接,所以我不确定为什么会发生这种情况?

还有哪些其他方法可以使用 PHP 连接到 Secure FTP Server?

编辑:我尝试使用ssh2_sftp,但仍然无法连接到安全的 FTP 服务器。

EDIT 2:有没有其他方法可以用 PHP 进行 SFTP,请指教。

更新:添加了使用 ssh2_sftp 连接到安全 FTP 服务器的代码,但它没有工作,程序终止并显示消息 Cannot connect to Server

<?php
$connection = ssh2_connect('www.server.com', 22);
ssh2_auth_password($connection, 'username', 'password');

$sftp = ssh2_sftp($connection) or die ("Cannot connect to server");

$stream = fopen("ssh2.sftp://$sftp/path/to/file", 'r');
?>

【问题讨论】:

  • 从您的评论到我的回复,您似乎也已经尝试过 ssh2_sftp。编辑您的问题以反映这一点可能会有所帮助,并包括您在使用该功能时遇到的具体问题,即当您执行哪些特定代码时会收到哪些错误消息。此外,包括 确实 工作的 SSH 命令可能允许验证您的代码。
  • @mdb :我已经用我用来连接的代码更新了问题,基本上我已经从 php.net 的 ssh2_sftp 示例中使用了它。
  • 还有其他方法可以使用 PHP 连接到 Secure FTP Server 吗?
  • 很明显,到处都有人遇到同样的问题 - 我很惊讶几乎没有针对 SSL 上的 FTP 发布的单一解决方案

标签: php ftp sftp


【解决方案1】:

FTP/S(基于 SSL 的 FTP)是与 SFTP(基于 SSH 的 FTP)完全不同的协议,您不能使用 SSL 库连接到 SFTP 服务器(反之亦然)。

我不是 PHP 程序员,但看起来确实是 some options to connect to an SSH server are natively available for your platform

【讨论】:

  • 我尝试使用ssh2_sftp,但仍然无法连接到安全的 FTP 服务器。
【解决方案2】:

就像 mdb 说的,你需要在 PHP 中使用 ssh2 扩展。如果您使用的是 Linux,则非常简单,只需 sudo pecl install ssh2。如果您使用的是 OS X,则需要进行 svn 结帐,或按照此处的说明操作:http://thirdpartycode.com/2010/01/installing-the-php-ssh2-extension-in-snow-leopard-10-6/

【讨论】:

  • 所以你的意思是说我需要为ssh2安装一个新的pecl包。我正在公司的服务器上工作,它是 linux。
  • 是的。除非您使用扩展构建 PHP,否则根据您的 linux 发行版,有人可能已经为它准备好了 rpm 或 debian 包。
【解决方案3】:

我在phpseclib, a pure PHP SFTP implementation 方面取得了相当大的成功。不要介意 PECL 扩展很难安装,但它也不可靠且不便携。

【讨论】:

    猜你喜欢
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2013-02-13
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    相关资源
    最近更新 更多