PHP 에서 원격서버에 파일을 업로드 하는 방법은 굉장히 간단합니다.
소스코드 단 4줄이면 끝이죠.
하지만 원격서버에 파일을 올리기 위해서는 'ssh2_connect', 'ssh2_auth_password', 'ssh2_scp_send 등의 함수를 사용해야 합니다.
그냥 사용하면되지 무엇이 문제냐구요?
있어야 사용을 하지요...
사용 할 수 있도록 사용환경을 셋팅해봅시다.
php-pecl-ssh2 패키기 설치
"php-pecl-ssh2" 패키지를 설치하면 위 함수들을 사용할 수 있습니다.
# yum list php-pecl-ssh2 라고 명령어를 쳐보세요.
설치가 되어있으면 위와 같이 나올 것이고 만약에 설치가 되어 있지않으면 설치 할 수있다고 나올 것입니다.
하지만 위 두 가지의 경우 말고 아예 패키지를 찾을 수 없는 경우도 있을 거예요.
이유는 간단합니다.
remi 저장소가 추가되어 있지 않기 때문입니다.
remi 저장소가 추가되어 있지 않다면 방법은 두 가지가 있습니다.
첫째. remi 저장소를 추가한다.
둘째. rpm 파일을 직접 설치 한다.
첫 번째 방법. remi 저장소를 추가한다.
아래 링크를 따라서 설치해주세요.
리눅스(Linux) remi 저장소 추가(설치) 하기
remi 저장소를 추가 하셨다면 아래 명령어를 이용해서 php-pecl-ssh2 를 설치합니다.
# yum install php-pecl-ssh2
위 명령어가 안된다면 아래 명령어로 해주세요.
# yum --enablerepo=remi install php-pecl-ssh2
두 번째 방법. rpm 파일을 직접 설치한다.
- http://rpm.pbone.net/ 사이트에 방문한다.
- 검색창에 "php-pecl-ssh2" 라고 검색을 한다.
- 자신의 환경에 맞는 rpm 파일을 선택한다.
- 다운로드 란에 링크를 우클릭 한 후 "링크 주소 복사" 를 한다.
- 리눅스 상에서 < # rpm -ivh "복사한 주소 붙여넣기" > 엔터
- 설치 완료.
아파치 재 실행
# service httpd restart 명령어를 수행합니다.
PHP 소스
<?php
$connection = ssh2_connect('192.168.0.5', 22); // 원격서버 주소 입력
ssh2_auth_password($connection, 'root', '비밀번호'); // 원격서버 계정 입력
$sftp = ssh2_sftp($connection);
ssh2_scp_send($connection, $file['tmp_name'], "파일이름을 포함한 경로입력", 0644);
// $file['tmp_name'] 는 업로드 할 파일을 의미합니다.
?>
소스는 굉장히 간단하죠?
이 소스를 사용하기 위한 준비가 더 복잡한듯하네요.
'『IT/개발』 > PHP' 카테고리의 다른 글
[PHP] 코딩 스타일 팁 (Coding Style Tip). (0) | 2014.12.23 |
---|---|
[PHP] html 형식의 이메일 전송 하기(SMTP). (0) | 2014.12.03 |
[PHP] String 인코딩 확인 후 UTF-8 변환하기. (2) | 2014.11.07 |
[PHPExel] Excel(엑셀) 한글 파일이름 깨짐 현상 해결방법. (0) | 2014.10.31 |
PHP Notice: Undefined index: 발생 시 처리 방법 (0) | 2014.10.22 |