使用PHP保护FTP连接

时间:2010-01-31 05:51:30

标签: php ftp sftp

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

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

使用PHP连接到安全FTP服务器的其他方法是什么?

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

编辑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');
?>

3 个答案:

答案 0 :(得分:1)

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

我不是PHP程序员,但似乎some options to connect to an SSH server are natively available for your platform

答案 1 :(得分:1)

就像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/

答案 2 :(得分:1)

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