php将fileterms函数返回的结果变成可读的形式

时间:2022-04-23 08:25:03
代码如下:

function perms_str($perms){ 
    if (($perms & 0xC000) == 0xC000) { 
        // Socket 
        $info = 's'; 
    } elseif (($perms & 0xA000) == 0xA000) { 
        // Symbolic Link 
        $info = 'l'; 
    } elseif (($perms & 0x8000) == 0x8000) { 
        // Regular 
        $info = '-'; 
    } elseif (($perms & 0x6000) == 0x6000) { 
        // Block special 
        $info = 'b'; 
    } elseif (($perms & 0x4000) == 0x4000) { 
        // Directory 
        $info = 'd'; 
    } elseif (($perms & 0x2000) == 0x2000) { 
        // Character special 
        $info = 'c'; 
    } elseif (($perms & 0x1000) == 0x1000) { 
        // FIFO pipe 
        $info = 'p'; 
    } else { 
        // Unknown 
        $info = 'u'; 
    } 

    // Owner 
    $info .= (($perms & 0x0100) ? 'r' : '-'); 
    $info .= (($perms & 0x0080) ? 'w' : '-'); 
    $info .= (($perms & 0x0040) ? 
                (($perms & 0x0800) ? 's' : 'x' ) : 
                (($perms & 0x0800) ? 'S' : '-')); 

    // Group 
    $info .= (($perms & 0x0020) ? 'r' : '-'); 
    $info .= (($perms & 0x0010) ? 'w' : '-'); 
    $info .= (($perms & 0x0008) ? 
                (($perms & 0x0400) ? 's' : 'x' ) : 
                (($perms & 0x0400) ? 'S' : '-')); 

    // World 
    $info .= (($perms & 0x0004) ? 'r' : '-'); 
    $info .= (($perms & 0x0002) ? 'w' : '-'); 
    $info .= (($perms & 0x0001) ? 
                (($perms & 0x0200) ? 't' : 'x' ) : 
                (($perms & 0x0200) ? 'T' : '-')); 

    return $info;