PHP의 ftp_pasv() 함수는 FTP 연결에서 수동(passive) 모드를 활성화하거나 비활성화하는 데 사용됩니다.
수동 모드란?
FTP에는 능동(active) 모드와 수동(passive) 모드 두 가지 데이터 전송 방식이 있습니다. 수동 모드는 클라이언트 쪽에서 데이터 연결을 먼저 요청하는 방식으로, 방화벽이나 NAT 환경에서 발생할 수 있는 연결 오류를 방지할 수 있습니다. 그렇기 때문에 실무에서는 파일 전송 전에 수동 모드를 켜두는 것이 일반적으로 권장됩니다.
문법
ftp_pasv(con, pasv)
매개변수
con −
ftp_connect()로 생성된 FTP 연결 리소스입니다.pasv − 수동 모드의 활성화 여부를 지정합니다. 지정 가능한 값은 다음과 같습니다.
TRUE − 수동 모드 켜기
FALSE − 수동 모드 끄기
반환값
ftp_pasv() 함수는 성공하면 TRUE, 실패하면 FALSE를 반환합니다.
예제
다음은 로그인 후 수동 모드를 활성화하고, 파일을 서버로 업로드하는 예제입니다.
<?php
$ftp_server = "192.168.0.4";
$ftp_user = "tim";
$ftp_pass = "wthbn#@121";
// FTP 서버에 연결
$con = ftp_connect($ftp_server) or die("$ftp_server 에 연결할 수 없습니다");
// 로그인
$login = ftp_login($con, $ftp_user, $ftp_pass);
// 수동 모드 활성화
ftp_pasv($con, true);
$local_file = "localfile.txt";
$my_serverfile = "serverfile.txt";
// 파일 업로드
if (ftp_put($con, $my_serverfile, $local_file, FTP_ASCII)) {
echo "파일이 업로드되었습니다!";
} else {
echo "파일 업로드 중 오류가 발생했습니다!";
}
// 연결 종료
ftp_close($con);
?>
주요 포인트
ftp_pasv()는 반드시
ftp_login()으로 로그인에 성공한 이후에 호출해야 합니다.업로드(
ftp_put)나 다운로드(ftp_get) 같은 데이터 전송 함수를 호출하기 전에 수동 모드를 설정하는 것이 좋습니다.방화벽 뒤에 있는 클라이언트 환경에서는 수동 모드를 사용하지 않으면 데이터 연결이 실패할 수 있습니다.