PHP 로 FTP 업로드 시 디렉토리와 파일은 만들어지는데 용량이 0인 경우

 PHP를 사용해 외부 FTP 서버에 파일을 업로드 하려고 합니다. 
아래 코드와 같은 흐름으로 작성을 했지만, 크기가 0인 파일만 만들어지고 데이터는 올라가지 않네요.

// Error code.
$ftpConn = ftp_connect($ftpHost, $ftpPort);
ftp_login($ftpConn, $Id, $password);
ftp_put($ftpConn, $file, $path, FTP_BINARY)); // timeout
ftp_close($ftpConn);

 찾아보니 FTP 서버의 환경에 따라서 '수동모드'를 작동해야 한다고 합니다.
'ftp_pasv()' 함수로 해당 설정을 할 수 있는데,
값을 true로 설정해도 업로드가 안되는 것은 여전했습니다.

// Error code.
$ftpConn = ftp_connect($ftpHost, $ftpPort);
ftp_pasv($ftpConn, true);
ftp_login($ftpConn, $Id, $password);
ftp_put($ftpConn, $file, $path, FTP_BINARY)); // timeout
ftp_close($ftpConn);

 결국 답을 찾았습니다.
어이없게도 코드의 순서가 잘못되어 있었습니다.
'ftp_login()' 이후에 해당 옵션을 설정해야 정상적으로 작동을 합니다.

$ftpConn = ftp_connect($ftpHost, $ftpPort);
ftp_login($ftpConn, $Id, $password);
ftp_pasv($ftpConn, true); // 로그인 다음에 설정해야한다.
ftp_put($ftpConn, $file, $path, FTP_BINARY));
ftp_close($ftpConn);

댓글