Linux PHP 站点从 FTP 转换为 SFTP

Linux PHP Site Converting from FTP to SFTP

我在 Linux 上接管了一个 php 网站 运行。我们需要从使用 ftp 转换为 sftp。该代码提示用户输入本地文件,然后使用 ftp 将文件放在本地服务器上。目前我们正在使用以下内容:

$ftp_user = FTP_USER;
$ftp_pass = FTP_PASS;
$ftp_server = FTP_SERVER;
$ftp_destination_path = FTP_DESTINATION_PATH;
$url_path = "uploads/";
    
if (!($conn_id = @ftp_connect($ftp_server)))
    return('error connecting');     
if (!($login_result = @ftp_login($conn_id, $ftp_user, $ftp_pass)))
    return('error logging in'); 
        
$filename_fixed = str_replace(" ", "_", $file['name']);
$filename_fixed = str_replace("/", "-", $filename_fixed);
$destination_file = $ftp_destination_path . $filename_fixed;
            
if (!($upload = @ftp_put($conn_id, $destination_file, $file['tmp_name'], FTP_BINARY)))
    die("Cannot upload to location $destination_file");         
    
ftp_close($conn_id);  

php 中是否有适合 sftp 的原生内容?似乎我必须安装像 PECL ssh2 这样的第三方包?我需要帮助,因为我找不到一个很好的例子来说明如何将我所拥有的转换为 sftp?

ssh2 包的来源是 PECL,但它被 PHP 的大多数发行版重新打包,例如Ubuntu, Arch Linux, MS-Windows。只有一些非常非常极端的情况可以直接从 PECL 安装。

在拥有 运行 SFTP 服务器之前,您不会取得任何进展(任何主流 Linux 发行版都可以,安装 SFTP自动使用 ssh)。

它可能与您当前使用的协议共享三个字母,但 SFTP 与 FTP 有很大不同。但是,应该可以(例如)创建具有 one-to-one 映射到您当前使用的功能的函数,但是由于 FTP 函数是核心 PHP 分布的一部分,您将需要使用不同的名称。