这个问题在这里已有答案:
我想在没有要传输的文件的服务器上运行php脚本。此脚本应将文件从一个ftp(带密码)传输到另一个ftp(带密码)。有可能在PHP? ftp_fput只允许将本地文件传输到ftp服务器?这样对吗?
我建议你使用thephpleague的Flysystem 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()
)逐个放入所需的位置。