<span><span>--------------------------------------------------
사용 ftp_pasv 시간,FTP 오류가 없도록 서버를 구성하는 방법?간단한 설명
--------------------------------------------------
존재하다 PHP 가운데사용 ftp_pasv 함수 수동 모드를 활성화합니다(Passive Mode)연결하다 FTP 섬기는 사람시간,常常会遇到연결하다失败或数据传输가운데断的问题。이것은 주로 기인입니다 FTP 서버 구성은 네트워크 환경과 일치하지 않습니다,클라이언트가 데이터 채널을 올바르게 설정하지 못하게합니다.。本文将详细说明사용 ftp_pasv 시간,FTP 서버 구성 방법,才能保证연결하다稳定、부드러운 변속기。
하나、FTP 활성 모드 및 수동 모드에 대한 간단한 설명
FTP 연결하다由控制연결하다和数据연결하다组成。활성 모드(Active Mode)가운데,클라이언트는 서버에 알려줍니다IP그리고 포트,섬기는 사람主动연결하다客户端进行数据传输;수동 모드(Passive Mode)서버는 클라이언트에게 데이터 포트를 알려줍니다,客户端主动연결하다섬기는 사람。수동 모드通常适合客户端处于防火墙或NAT环境시간사용。
둘、为什么사용 ftp_pasv?
존재하다现代网络环境가운데,클라이언트는 종종 방화벽이나 라우터 뒤에 위치합니다,활성 모드연결하다因被动防火墙阻挡而失败。열려 있는 ftp_pasv 수동 모드后,클라이언트는 이러한 제한을 우회 할 수 있습니다,主动연결하다섬기는 사람指定的端口进行数据传输,이것은 성공률을 향상시킵니다。
삼、FTP 서버 구성 방법?
</span><span><span class="hljs-number">1</span></span><span>. **配置수동 모드端口范围**
섬기는 사람必须设置하나段专用的端口范围供수동 모드사용,예를 들어 </span><span><span class="hljs-number">50000</span></span><span>-</span><span><span class="hljs-number">51000</span></span><span>。
- 존재하다 vsftpd 가운데,구성 파일은 일반적으로입니다 `/etc/vsftpd/vsftpd.conf`,추가 또는 수정:
```conf
pasv_min_port=</span><span><span class="hljs-number">50000</span></span><span>
pasv_max_port=</span><span><span class="hljs-number">51000</span></span><span>
</span></span>
Proftpd 및 Pure-FTPD와 같은 다른 FTP 서버에는 유사한 구성이 있습니다.
방화벽 포트를 개방하십시오 <br> 수동 모드 데이터 포트 범위 (위의 예에서 50000-51000)는 서버 방화벽에서 해제해야합니다. 그렇지 않으면 클라이언트가 이러한 포트에 연결할 수 없으므로 전송 실패가 발생합니다.
예를 들어, iptables를 사용하여 규칙을 추가하십시오.
<span><span>iptables -I INPUT -p tcp --match multiport --dports 50000:51000 -j ACCEPT
</span></span>
방화구 또는 기타 방화벽 소프트웨어를 사용하는 경우 해당 구성도 필요합니다.
서버의 공개 IP를 설정하십시오
서버는 일반적으로 인트라넷에 있거나 NAT를 사용하며 클라이언트에게 올바른 공개 IP 주소를 알려야합니다.
VSFTPD에서 구성 :
<span>pasv_address=공개 네트워크IP주소
</span>
그렇지 않으면 클라이언트는 인트라넷 IP를 얻고 데이터 포트에 연결할 수 없습니다.
연결 시간 초과 및 최대 연결 수 <br>를 구성하십시오 조기 연결 분리 또는 서버 리소스 부족을 피하기 위해 타임 아웃 설정 및 최대 연결 수를 적절하게 조정하십시오.
4. PHP 코드 예제 다음은 수동 모드를 켜고 파일을 업로드하는 간단한 예입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$ftp_server</span></span><span> = </span><span><span class="hljs-string">"ftp.example.com"</span></span><span>;
</span><span><span class="hljs-variable">$ftp_user</span></span><span> = </span><span><span class="hljs-string">"username"</span></span><span>;
</span><span><span class="hljs-variable">$ftp_pass</span></span><span> = </span><span><span class="hljs-string">"password"</span></span><span>;
</span><span><span class="hljs-variable">$local_file</span></span><span> = </span><span><span class="hljs-string">"/path/to/local/file.txt"</span></span><span>;
</span><span><span class="hljs-variable">$remote_file</span></span><span> = </span><span><span class="hljs-string">"file.txt"</span></span><span>;
</span><span><span class="hljs-comment">// 연결하다 FTP</span></span><span>
</span><span><span class="hljs-variable">$conn_id</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_server</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$conn_id</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"无法연결하다 FTP 섬기는 사람"</span></span><span>);
}
</span><span><span class="hljs-comment">// 로그인하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">ftp_login</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$ftp_user</span></span><span>, </span><span><span class="hljs-variable">$ftp_pass</span></span><span>)) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"FTP 로그인하십시오失败"</span></span><span>);
}
</span><span><span class="hljs-comment">// 열려 있는수동 모드</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ftp_pasv</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// 파일 업로드</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ftp_put</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>, </span><span><span class="hljs-variable">$local_file</span></span><span>, FTP_BINARY)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"성공적으로 업로드하십시오"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"업로드 실패"</span></span><span>;
}
</span><span><span class="hljs-comment">// 关闭연결하다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
5. 요약 FTP_PASV를 사용할 때 키는 수동 모드 포트 범위, 방화벽 규칙 및 서버 측의 공개 네트워크 IP 주소를 올바르게 구성하는 것입니다. 그들 중 어느 것도 누락되지 않았으며, 그렇지 않으면 클라이언트가 데이터 연결을 올바르게 설정할 수 없습니다. 서버가 합리적으로 구성되고 올바른 PHP 코드와 결합되는 한 대부분의 FTP 수동 모드의 연결 오류를 피할 수 있습니다.
이 기사의 설명을 통해 FTP 수동 모드 구성에 대한 명확한 이해를 가지고 있으며 실제 프로젝트에서 FTP_PASV를 원활하게 사용할 수있어 안정적이고 효율적인 파일 전송을 보장 할 수 있습니다.
<span></span>