현재 위치: > 최신 기사 목록> FTP_RAWLIST가 부정확 한 파일 권한이 표시되는 이유는 무엇입니까?

FTP_RAWLIST가 부정확 한 파일 권한이 표시되는 이유는 무엇입니까?

gitbox 2025-05-26

해결책 제안

  • , 다른 서버의 반환 형식에 따라 다른 구문 분석 로직을 작성하십시오.

  • PHP 내장 기능 FTP_RAWLIST를 사용하여 정보를 얻은 후에는 정규 표현식과 함께 유연하게 구문 분석하여 엄격한 매칭을 피할 수 있습니다.

  • 조건이 허용되는 경우 FTP 서버 (예 : SFTP 또는 FTP 확장 명령)에서 지원하는 다른 명령 또는 프로토콜을 사용하여 보다 정확한 파일 권한 정보를 얻으십시오.

  • 다른 사용자 권한 하에서 반환 결과를 테스트하여 익명 및 일반 사용자 권한 반환이 일관되어 있는지 확인하십시오.

  • 일반적으로 더 강한 프로토콜 지원과보다 강력한 구문 분석 메커니즘을 갖는 PhpSeclib와 같은 타사 FTP 라이브러리를 고려하십시오 .


샘플 코드 : FTP_RAWLIST를 기반으로 한 간단한 구문 분석 UNIX 스타일 권한

 <?php
$ftp_server = "gitbox.net";
$ftp_user = "username";
$ftp_pass = "password";

// 연결하다FTP
$conn_id = ftp_connect($ftp_server);
if (!$conn_id) {
    die("无法연결하다 FTP 섬기는 사람");
}

// 로그인하십시오
if (!ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    die("FTP 로그인하십시오失败");
}

// 디렉토리 목록을 가져옵니다
$rawlist = ftp_rawlist($conn_id, "/path/to/directory");
if ($rawlist === false) {
    die("디렉토리 목록을 가져옵니다失败");
}

// 권한 정보를 분석하십시오
foreach ($rawlist as $line) {
    // Unix 스타일 권한 문자열은 일반적으로 첫 번째 필드입니다
    // 예를 들어:-rw-r--r-- 1 user group 1234 May 20 12:00 example.txt
    $parts = preg_split('/\s+/', $line, 9);
    if (count($parts) === 9) {
        $permissions = $parts[0];
        $filename = $parts[8];
        echo "문서: $filename ,권한: $permissions\n";
    }
}

ftp_close($conn_id);
?>