2017-12-23 12 views
1

Ich möchte ein PHP-Skript auf einem Server ausführen, wo keine Dateien übertragen werden. Dieses Skript sollte Dateien von einem ftp (mit Passwort) auf ein anderes ftp (mit Passwort) übertragen. Es ist in PHP möglich? ftp_fput erlaubt nur eine lokale Datei auf einen FTP-Server zu übertragen? Ist es richtig?PHP Script zum Übertragen von Dateien von einem FTP zu einem anderen FTP

+2

Mögliches Duplikat von [Übertragen von Dateien zwischen zwei Remote-FTP-Servern in PHP] (https://stackoverflow.com/questions/47797962/transfer-file-between-two-remote-ftp-servers-in-php) –

Antwort

0

Ich empfehle Ihnen, thephpleague 's FlysystemFTP adapter zu verwenden. Sie können ein Skript erstellen, zu diesem Paket basiert und verwenden Sie es auf Ihren Steuerungsserver um Dateien A zu FTP-Server B Übertragung von FTP-Server. Hier

ist ein Beispiel-Script, das Daten von Server übertragen A zu Server B Verwendung SFTP. HINWEIS: Im folgenden Skript wird davon ausgegangen, dass Sie das FlySystem-Paket installiert haben (z. B. 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); 
} 

Es stellt eine Verbindung zu der Quelle ($source) und das Ziel ($destination) -Server. Listen Sie den Inhalt auf der Quelle (listContents() Methode) und in einer foreach Schleife liest es die Dateien (read()) und setzen Sie ihren Inhalt (put()) an den gewünschten Ort nacheinander.

Verwandte Themen