webForumDet fria alternativet

fileperms()

2 svar · 179 visningar · startad av herq

herqMedlem sedan aug. 2000201 inlägg
#1

Förstår mig inte riktigt på fileperms() returnerade värden ex:

schmådd - fileperms
444 - 33060
666 - 33206
777 - 33279
770 - 33272

hur kommer det sig?

(blev många PHP inlägg idag :-))

AliasMedlem sedan nov. 200014 inlägg
#2

chmod representeras i oktaler.
För att få ett oktalt värde testa detta.
printf("%o", fileperms("a_file.ext") );

Den här funktionen visar hur du kan använda fileperms() !

function display_perms( $mode )
{
/* Determine Type */
if(($mode & 0xC000) === 0xC000) // Unix domain socket
$type = 's';
elseif(($mode & 0x4000) === 0x4000) // Directory
$type = 'd';
elseif(($mode & 0xA000) === 0xA000) // Symbolic link
$type = 'l';
elseif(($mode & 0x8000) === 0x8000) // Regular file
$type = '-';
elseif(($mode & 0x6000) === 0x6000) // Block special file
$type = 'b';
elseif(($mode & 0x2000) === 0x2000) // Character special file
$type = 'c';
elseif(($mode & 0x1000) === 0x1000) // Named pipe
$type = 'p';
else // Unknown
$type = '?';

/* Determine permissions */
$owner["read"] = ($mode & 00400) ? 'r' : '-';
$owner["write"] = ($mode & 00200) ? 'w' : '-';
$owner["execute"] = ($mode & 00100) ? 'x' : '-';
$group["read"] = ($mode & 00040) ? 'r' : '-';
$group["write"] = ($mode & 00020) ? 'w' : '-';
$group["execute"] = ($mode & 00010) ? 'x' : '-';
$world["read"] = ($mode & 00004) ? 'r' : '-';
$world["write"] = ($mode & 00002) ? 'w' : '-';
$world["execute"] = ($mode & 00001) ? 'x' : '-';

/* Adjust for SUID, SGID and sticky bit */
if( $mode & 0x800 )
$owner["execute"] = ($owner[execute]=='x') ? 's' : 'S';
if( $mode & 0x400 )
$group["execute"] = ($group[execute]=='x') ? 's' : 'S';
if( $mode & 0x200 )
$world["execute"] = ($world[execute]=='x') ? 't' : 'T';

printf("%1s", $type);
printf("%1s%1s%1s", $owner[read], $owner[write], $owner[execute]);
printf("%1s%1s%1s", $group[read], $group[write], $group[execute]);
printf("%1s%1s%1s\n", $world[read], $world[write], $world[execute]);
}

// Alias

herqMedlem sedan aug. 2000201 inlägg
#3

tack

så här blev det till slut:

$fileperms = sprintf ("%o", fileperms($file));
$fileperms = substr ($fileperms, -3);
Genererad på 369 ms · cache AV · v20260730165559-full.f96bc7eb