ftp_nb_continue 가 반환 한 값은 ftp_finished 또는 ftp_failed로 변속기가 완료되었는지 여부를 나타냅니다. ftp_failed 가 반환되면 전송이 실패했음을 의미합니다. ftp_finished 가 반환되면 전송이 성공적으로 완료되었음을 의미합니다. 그러나 경우에 따라 예외의 문제에 대한 문제가 발생할 수 있습니다.
해결책:
먼저 FTP 연결이 정상인지 확인하고 FTP_CONNECT 및 FTP_LOGIN 과 같은 기능을 사용하여 연결이 성공했는지 확인하십시오.
대상 경로와 권한이 올바른지 확인하십시오. 파일에 쓰기 권한이 없거나 대상 폴더를 사용할 수 없습니다.
ftp_error를 사용하여 FTP 서버에서 오류 정보를 얻으려면 문제를 찾는 데 도움이됩니다.
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> == FTP_FAILED) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"전송이 실패했습니다: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">ftp_error</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>);
}
</span></span>파일 전송에 FTP_NB_CONTINUE를 사용하는 경우, FTP 연결의 시간 초과 시간이 부적절하게 설정되면 특히 큰 파일을 전송할 때 타임 아웃에 연결이 발생할 수 있습니다.
해결책:
FTP_SET_OPTION을 사용하여 연결 만료를 피하기 위해 FTP_Timeout 과 같은 FTP의 시간 초과 옵션을 설정하십시오.
<span><span><span class="hljs-title function_ invoke__">ftp_set_option</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>, FTP_TIMEOUT_SEC, </span><span><span class="hljs-number">90</span></span><span>); </span><span><span class="hljs-comment">// 시간 초과 시간을 설정하십시오90두번째</span></span><span>
</span></span>서버와 클라이언트 간의 네트워크 연결이 안정적이고 과도한 부하로 인해 FTP 서버가 지연되지 않도록하십시오.
때때로 FTP 서버가 전송 중에 실수로 연결을 닫아 FTP_NB_CONTINUE 가 FTP_FAILED 오류를 반환합니다.
해결책:
FTP 서버의 구성을 확인하여 유휴 연결이 너무 짧지 않은지 확인하십시오.
코드에서 자동 재 연결 메커니즘을 설정하십시오. 전송이 실패하면 다시 연결하고 계속 업로드하거나 다운로드 할 수 있습니다.
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> == FTP_FAILED) {
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>);
</span><span><span class="hljs-variable">$ftp_connection</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_host</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">ftp_login</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</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>경로 오류는 또 다른 일반적인 오류입니다. 파일의 업로드 경로와 대상 경로가 올바르고 경로 틀린이 없는지 확인하십시오.
해결책:
FTP_CHDIR 함수를 사용하여 대상 디렉토리로 전환하여 파일을 올바른 위치에 업로드 할 수 있는지 확인하십시오.
파일 전송 전에 ftp_pwd를 사용하여 현재 디렉토리를 가져 와서 경로가 올바른지 확인하십시오.
<span><span><span class="hljs-variable">$currentDir</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_pwd</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</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-variable">$currentDir</span></span><span>;
</span></span>FTP 서버의 대상 폴더에 쓰기 권한이없는 경우 FTP_NB_CONTINUE는 파일을 성공적으로 업로드하지 못할 수 있습니다. 이 문제는 일반적으로 공유 호스팅 환경에서 발생합니다.
해결책:
대상 폴더에 올바른 권한 설정이 있는지 확인하십시오. 일반적으로 상황에 따라 755 또는 777로 설정할 수 있습니다.
CPANEL 또는 유사한 도구를 통해 서버를 관리하는 경우 파일 관리자를 통해 폴더 권한을 직접 조정할 수 있습니다.
<span><span><span class="hljs-title function_ invoke__">ftp_chmod</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>, </span><span><span class="hljs-number">0777</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>);
</span></span>FTP_NB_CONTINUE 는 차단이 없지만 데이터 연결 (즉, 파일 전송에 사용되는 데이터 채널)이 차단 될 수 있습니다. PASV (Passive Mode) 연결을 사용하는 경우 방화벽 또는 기타 네트워크 제한으로 인해 데이터 연결이 실패 할 수 있습니다.
해결책:
방화벽의 한계를 우회하고 FTP_PASV 기능을 사용하여 수동 모드로 전환하려면 활성 모드로 전환하십시오.
<span><span><span class="hljs-title function_ invoke__">ftp_pasv</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>); </span><span><span class="hljs-comment">// 활성 모드를 사용하십시오</span></span><span>
</span></span>또한 제한된 포트 사용을 피하기 위해 FTP 클라이언트의 포트 구성을 수정할 수도 있습니다.
파일 전송 중에 캐시 된 데이터가 제 시간에 새로 고치지 않으면 파일의 불완전한 업로드 또는 다운로드 또는 일관성이없는 파일 내용으로 이어질 수 있습니다.
해결책:
파일을 전송하기 전에 가능한 캐시를 닫거나 ftp_nb_put 및 ftp_nb_get 함수를 사용하여 캐시 간섭을 피하기 위해 파일을 직접 전송하십시오.
PHP는 특히 파일 전송이 매우 큰 경우 리소스 제약으로 인해 파일 전송 작업을 중단 할 수 있습니다. 일반적인 자원 제한 사항에는 최대 실행 시간, 메모리 제한 등이 포함됩니다.
해결책:
PHP의 최대 실행 시간 제한은 set_time_limit (0) 에 의해 취소 될 수 있습니다.
<span><span><span class="hljs-title function_ invoke__">set_time_limit</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>); </span><span><span class="hljs-comment">// 최대 실행 시간 제한을 취소하십시오</span></span><span>
</span></span>메모리 제한 문제가 발생하면 ini_set ( 'Memory_Limit', '512m') 에 의해 PHP 스크립트의 메모리 제한을 늘릴 수 있습니다.