PHP脚本将文件从一个ftp传输到另一个ftp

时间:2017-12-23 16:16:19

标签: php ftp

我想在没有要传输的文件的服务器上运行php脚本。此脚本应将文件从一个ftp(带密码)传输到另一个ftp(带密码)。 有可能在PHP? ftp_fput只允许将本地文件传输到ftp服务器?是不是?

1 个答案:

答案 0 :(得分:0)

我建议您使用thephpleagueFlysystem FTP adapter。您可以基于此软件包创建脚本并在 控制服务器 上使用它,以便从 ftp服务器A <传输文件/ strong>到 ftp服务器B

以下是使用 <将数据从 服务器A 传输到 服务器B 的示例脚本EM> SFTP 即可。 注意 :以下脚本假定您已安装了flysystem包(例如composer require league/flysystem)。

<?php

require_once __DIR__ . '/vendor/autoload.php';

use League\Flysystem\Filesystem;
use League\Flysystem\Sftp\SftpAdapter;

$source = new Filesystem(new SftpAdapter([
    'host' => 'server A',
    'port' => 'server A port',
    'username' => 'server A sftp user',
    'password' => 'server A sftp pwd',
    'root' => 'source folder on server A',
    'timeout' => 10,
]));

$destination = new Filesystem(new SftpAdapter([
    'host' => 'server B',
    'port' => 'server B port',
    'username' => 'server B sftp user',
    'password' => 'server B sftp pwd',
    'root' => 'destination folder on server B',
    'timeout' => 10,
]));

$files = $source->listContents();

foreach ($files as $file) {
    $data = $source->read($file['path']);
    $destination->put($file['path'], $data);
}

它建立与源($source)和目标($destination)服务器的连接。列出源(listContents()方法)上的内容,并在foreach循环中读取文件(read())并将其内容(put())放入所需位置一个人。