我想在没有要传输的文件的服务器上运行php脚本。此脚本应将文件从一个ftp(带密码)传输到另一个ftp(带密码)。 有可能在PHP? ftp_fput只允许将本地文件传输到ftp服务器?是不是?
答案 0 :(得分:0)
我建议您使用thephpleague的Flysystem 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()
)放入所需位置一个人。