PHP에서 SFTP를 사용하는 방법
웹 FTP 클라이언트용 PHP 스크립트를 많이 접했습니다.SFTP 클라이언트를 PHP에서 웹 애플리케이션으로 구현해야 합니다.PHP는 SFTP를 지원합니까?샘플을 찾을 수 없었습니다.누가 나 좀 도와줄래?
PHP에는 ssh2 스트림 래퍼(기본적으로 비활성화됨)가 있습니다.따라서 스트림 래퍼를 지원하는 모든 함수와 함께 sftp 연결을 사용할 수 있습니다.ssh2.sftp://
예를 들어 프로토콜입니다.
file_get_contents('ssh2.sftp://user:pass@example.com:22/path/to/filename');
또는 ssh2 확장도 사용하는 경우
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);
$stream = fopen("ssh2.sftp://$sftp/path/to/file", 'r');
http://php.net/manual/en/wrappers.ssh2.php 를 참조해 주세요.
한편, 이 토픽에 관한 질문도 많이 있습니다.
ssh2 기능은 그다지 좋지 않습니다.사용하기 어렵고 설치도 어렵기 때문에 코드 이동성이 제로임을 보증합니다.순수한 PHP SFTP 구현인 phpseclib을 사용하는 것이 좋습니다.
「phpseclib」가 도움이 되는 것을 알았습니다(SFTP와 그 외의 많은 기능).http://phpseclib.sourceforge.net/
파일을 서버에 배치하려면 , 간단하게 문의해 주세요(http://phpseclib.sourceforge.net/sftp/examples.html#put) 의 코드 예).
<?php
include('Net/SFTP.php');
$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
exit('Login Failed');
}
// puts a three-byte file named filename.remote on the SFTP server
$sftp->put('filename.remote', 'xxx');
// puts an x-byte file named filename.remote on the SFTP server,
// where x is the size of filename.local
$sftp->put('filename.remote', 'filename.local', NET_SFTP_LOCAL_FILE);
Flysystem v1 설치:
composer require league/flysystem-sftp
그 후, 다음과 같이 입력합니다.
use League\Flysystem\Filesystem;
use League\Flysystem\Sftp\SftpAdapter;
$filesystem = new Filesystem(new SftpAdapter([
'host' => 'example.com',
'port' => 22,
'username' => 'username',
'password' => 'password',
'privateKey' => 'path/to/or/contents/of/privatekey',
'root' => '/path/to/root',
'timeout' => 10,
]));
$filesystem->listFiles($path); // get file lists
$filesystem->read($path_to_file); // grab file
$filesystem->put($path); // upload file
....
읽기:
https://flysystem.thephpleague.com/v1/docs/
v2로 업그레이드:
https://flysystem.thephpleague.com/v2/docs/advanced/upgrade-to-2.0.0/
설치하다
composer require league/flysystem-sftp:^2.0
그 후, 다음과 같이 입력합니다.
//$filesystem->listFiles($path); // get file lists
$allFiles = $filesystem->listContents($path)
->filter(fn (StorageAttributes $attributes) => $attributes->isFile());
$filesystem->read($path_to_file); // grab file
//$filesystem->put($path); // upload file
$filesystem->write($path);
나는 전면적인 코프아웃을 수행했고 배치파일을 만들고 나서 콜을 하는 수업을 썼다.sftp
경유로system
가장 좋은(또는 가장 빠른) 방법은 아니지만, 필요한 기능을 할 수 있고 PHP에 추가 라이브러리나 확장 기능을 설치할 필요가 없습니다.
이 기능을 사용하고 싶지 않다면ssh2
확장 기능
언급URL : https://stackoverflow.com/questions/4689540/how-to-sftp-with-php
'source' 카테고리의 다른 글
java.sql로 표시되는 밀리초수를 취득하는 방법.시간? (0) | 2022.09.17 |
---|---|
Python에서 환경변수에 액세스하려면 어떻게 해야 합니까? (0) | 2022.09.16 |
MariaDB PCRE 정규 표현 문제 (0) | 2022.09.16 |
지정된 html 문자열에서 선행 및 후행 공백을 제거하려면 어떻게 해야 합니까? (0) | 2022.09.16 |
계산된 속성 업데이트 후 함수를 실행하는 가장 좋은 방법 (0) | 2022.09.16 |