2017-12-23 6 views
1

전송할 파일이없는 서버에서 PHP 스크립트를 실행하고 싶습니다. 이 스크립트는 한 ftp (암호 포함)에서 다른 ftp (암호 포함)로 파일을 전송해야합니다. PHP에서 가능합니까? ftp_fput은 로컬 파일을 ftp-server로 전송 만 허용합니까? 맞아?하나의 ftp에서 다른 ftp로 파일을 전송하는 PHP 스크립트

+2

[PHP의 두 원격 FTP 서버간에 파일 전송] 가능한 복제본 (https://stackoverflow.com/questions/47797962/transfer-files-between-two-remote-ftp-servers-in-php) –

답변

0

thephpleagueFlysystemFTP 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())을 하나씩 원하는 위치에 놓습니다.

관련 문제