PHP脚本将文件从一个ftp传输到另一个ftp [重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

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

php ftp
1个回答
0
投票

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

这是一个使用sftp将数据从服务器A传输到服务器B的示例脚本。注意:以下脚本假定您已安装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())逐个放入所需的位置。

© www.soinside.com 2019 - 2024. All rights reserved.