PHP SFTP 업로드 및 다운로드 기능 구현
SSH 프로 토 콜 을 사용 하여 FTP 전송 을 하 는 프로 토 콜 을 SFTP(보안 파일 전송)라 고 합 니 다.Sftp 와 Ftp 는 모두 파일 전송 프로 토 콜 입 니 다.구별:sftp 는 ssh 에 포 함 된 프로 토 콜(ssh 는 암호 화 된 telnet 프로 토 콜)입 니 다. sshd 서버 가 시작 되면 사용 할 수 있 고 sftp 보안 이 높 으 며 ftp 서버 가 시작 되 지 않 아 도 됩 니 다.sftp=ssh+ftp(보안 파일 전송 프로 토 콜).ftp 는 명문 전송 이기 때문에, 안전성 이 없고 sftp 는 ssh 를 기반 으로 전송 내용 이 암호 화 되 어 비교적 안전 합 니 다.현재 네트워크 가 안전 하지 않 습 니 다.예전 에 telnet 을 사 용 했 던 것 은 모두 ssh 2(SSH 1 이 풀 렸 습 니 다)로 바 뀌 었 습 니 다.
sftp 이 도 구 는 ftp 용법 과 같 습 니 다.그러나 전송 파일 은 ssl 을 통 해 암호 화 되 어 있어 캡 처 되 더 라 도 풀 수 없습니다.또한 sftp 는 ftp 기능 보다 파일 속성 설정 이 많 습 니 다.
2.SSH 2 확장 설정
1. 다운로드 주소:http://windows.php.net/downloads/pecl/releases/ssh2/0.12/
자신의 phop 버 전에 따라 확장 팩 을 선택 하 십시오.여 기 는 phop 5.3 을 사용 하기 때문에 제 가 다운로드 한 것 은 phop 입 니 다.ssh2-0.12-5.3-ts-vc9-x86.zip( 링크 다운로드 )
2.압축 을 풀 면 세 개의 파일 이 있 습 니 다.libssh 2.dll,ppssh.dll、php_ssh2.pdb。
3.phpssh.dll、php_ssh 2.pdb 는 phop 확장 디 렉 터 리 아래 phop/ext/아래 에 놓 습 니 다.
4.libssh 2.dll 을 c:/windows/system 32 와 c:/windows/syswow 64 각각 1 부 로 복사 합 니 다.
5.php.ini 에 extension=php 추가ssh2.dll
6.아파 치 를 다시 시작 하고 phpinfo()를 출력 한다.SSH 2 확장 이 나타 나 설치 성공 을 표시 합 니 다.
3.SFTP 코드 데모
호출 코드
$config = array(
'host' =>'211.*.*.*', //
'port' => '23', //
'username' =>'test', //
'password' =>'*****', //
);
$ftp = new Sftp($config);
$localpath="E:/www/new_20170724.csv";
$serverpath='/new_20170724.csv';
$st = $ftp->upftp($localpath,$serverpath); //
if($st == true){
echo "success";
}else{
echo "fail";
}
SFTP 패 키 징 클래스
<?php
/**
* SFtp
*
*/
namespace Common\ORG\Util;
class Sftp
{
// NULL
private $config = NULL;
// NULL
private $conn = NULL;
//
public function __construct($config)
{
$this->config = $config;
$this->connect();
}
public function connect()
{
$this->conn = ssh2_connect($this->config['host'], $this->config['port']);
if( ssh2_auth_password($this->conn, $this->config['username'], $this->config['password']))
{
}else{
echo " ";
}
}
// ,
public function downftp($remote, $local)
{
$ressftp = ssh2_sftp($this->conn);
return copy("ssh2.sftp://{$ressftp}".$remote, $local);
}
// , ftp
public function upftp( $local,$remote, $file_mode = 0777)
{
$ressftp = ssh2_sftp($this->conn);
return copy($local,"ssh2.sftp://{$ressftp}".$remote);
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.