RSS Feed

PHP fileperms

08.06.2006 by naden

Da der von PHP mittels fileperms() gelieferte Dezimalwert nicht wirklich gut lesbar ist, bietet sich eine Funktion an, welche diesen in das typische Linux-Format umwandelt.

Diese könnte wie folgt aussehen:

function FilePermsDecode( $perms )
{
	$oct = str_split( strrev( decoct( $perms ) ), 1 );
 
	$masks = array( '---', '--x', '-w-', '-wx', 'r--', 'r-x', 'rw-', 'rwx' );
 
	return(
		sprintf( '%s %s %s', 
			array_key_exists( $oct[ 2 ], $masks ) ? $masks[ $oct[ 2 ] ] : '###',
			array_key_exists( $oct[ 1 ], $masks ) ? $masks[ $oct[ 1 ] ] : '###',
			array_key_exists( $oct[ 0 ], $masks ) ? $masks[ $oct[ 0 ] ] : '###'
		)
	);
}
 
$perms = fileperms( __FILE__ );
 
if( $perms !== false )
{
	printf( 
		'dezimal: %d | oktal: %o | lesbar: %s', 
		$perms, 
		$perms, 
		FilePermsDecode( $perms )
	);
}

Ausgabe:

dezimal: 33270 | oktal: 100766 | lesbar: rwx rw- rw-


2 Kommentare »

  1. Thor sagt:

    Folgende Stelle ist im Skript falsch:

    $masks[3] = ‘-wx’;

  2. naden sagt:

    Danke, habs verbessert!

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>