현재 위치: > 최신 기사 목록> FTP_MKDIR의 권한 문제 해결 디렉토리를 만들지 못했습니다.

FTP_MKDIR의 권한 문제 해결 디렉토리를 만들지 못했습니다.

gitbox 2025-05-31

문제 설명

다음 코드를 사용하여 디렉토리를 작성하려고한다고 가정 해 봅시다.

<code> $ ftp_server = "ftp.gitbox.net"; $ ftp_user = "your_username"; $ ftp_pass = "Your_password";

$ conn_id = ftp_connect ($ ftp_server);
$ login_result = ftp_login ($ conn_id, $ ftp_user, $ ftp_pass);

if (ftp_mkdir ($ conn_id, "/public_html/uploads/newdir")) {
에코 "카탈로그 제작이 성공했습니다!";
} 또 다른 {
에코 "카탈로그 제작 실패.";
}

ftp_close ($ conn_id);
</코드>

실행 후 출력은 "카탈로그 생성 실패"입니다. 현재, 경로 문제, 연결 문제 또는 다른 것인지 전혀 모른다고 생각할 수 있습니다.


일반적인 원인 분석

1. 불충분 한 권한

FTP 사용자가 대상 디렉토리에 대한 쓰기 권한이없는 가장 일반적인 이유. 예를 들어, FTP 사용자가 /public_html/uploads 로 제한되고 상단 디렉토리에서 폴더를 만들려고하면이 작업이 자연스럽게 실패합니다.

2. 대상 경로에는 중간 디렉토리가 없습니다.

FTP는 자동으로 중간 디렉토리를 생성하지 않습니다. 경로가 /public_html/uploads/newdir/test 이지만 Newdir 는 아직 존재하지 않으면 실행이 실패합니다.

3. 수동 모드 및 연결 방법 문제

일부 서버에서는 수동 모드를 활성화해야합니다. 활성화되지 않으면 변속기 채널의 성공적인 설정으로 인해 일부 작업이 실패 할 수 있습니다.

<code> // 수동 모드 활성화 ftp_pasv ($ conn_id, true); </코드>

해결책

방법 1 : FTP 사용자 권한을 확인하고 수정하십시오

호스트 제어판 (예 : CPANEL)에 로그인하여 FTP 사용자가 대상 디렉토리에 쓰기 권한이 있는지 확인하십시오. 그렇지 않은 경우 홈 디렉토리를 조정하거나 FTP 계정 설정에서 더 높은 권한을 부여해야합니다.

가상 호스트를 사용하는 경우 권한을 수정하지 못할 수 있으며 현재 호스트 서비스 제공 업체에 문의해야합니다.


방법 2 : 디렉토리를 단계별로 만듭니다

중간 디렉토리의 존재하지 않아 실패를 피하기 위해 루프를 통해 단계적으로 디렉토리를 만들 수 있습니다.

<code> function ftp_mksubdirs ($ ftp_stream, $ base_dir, $ target_dir) {$ dir = exploit ( '/', $ target_dir); $ path = $ base_dir; foreach ($ dir as $ dir) {if (! $ dir) 계속; $ path. = "/$ dir"; if (! @ftp_chdir ($ ftp_stream, $ path)) {if (! @ftp_mkdir ($ ftp_stream, $ path)) {return false; }}} return true; }

$ ftp_server = "ftp.gitbox.net";
$ ftp_user = "your_username";
$ ftp_pass = "Your_password";

$ conn_id = ftp_connect ($ ftp_server);
$ login_result = ftp_login ($ conn_id, $ ftp_user, $ ftp_pass);
ftp_pasv ($ conn_id, true);

$ base = "/public_html";
$ target = "업로드/newdir/test";

if (ftp_mksubdirs ($ conn_id, $ base, $ target)) {
Echo "디렉토리 구조가 성공적으로 만들어졌습니다.";
} 또 다른 {
Echo "카탈로그 생성 실패, 권한을 확인하십시오.";
}

ftp_close ($ conn_id);
</코드>

이 접근법은 필요한 디렉토리 구조가 원격 FTP에서 재귀 적으로 생성되도록합니다.


방법 3 : 권한 테스트를 위해 FTP_CHDIR을 사용하십시오

디렉토리를 만들기 전에 ftp_chdir ()를 시도하여 대상 디렉토리를 입력 할 수 있습니다. 실패하면 권한이 충분하지 않거나 경로가 잘못되었을 수 있습니다.

<code> if (@ftp_chdir ($ conn_id, "/public_html/uploads")) {echo "디렉토리가 액세스 가능합니다."; } else {echo "디렉토리 액세스가 실패하면 권한 문제가 발생할 수 있습니다."; } </code>

이 단계는 디렉토리에 입력 할 권한이 있는지 신속하게 결정하는 데 도움이됩니다.