In diesem Tutorial möchte ich Ihnen zeigen, wie man mit der chmod()-Funktion die Zugriffsrechte einer Datei verändern kann. Dazu bietet chmod() genau zwei Parameter an: den Dateipfad und die Zugriffsrechte an sich.
Die genaue Syntax der Funktion lautet:
chmod(Dateipfad, Zugriffsrechte);
Während die Verwendung des Dateipfad-Parameters kein Problem darstellen sollte, man gibt entweder den relativen, vom aktuellen Verzeichnis des Scripts ausgehenden, oder den absoluten Pfad der Datei an, gibt es beim zweiten Parameter der chmod()-Funktion ein paar Dinge zu beachten.
Da dem Parameter eine Oktalzahl übergeben wird, muss man dies chmod() auch bewusst machen, um Fehlermeldungen zu vermeiden. Dazu setzt man dem dreistelligen Zugriffsrechtecode einfach eine 0 vor. Die drei übrigen Stellen stehen jeweils für die Person/Gruppe auf welche die angegebenen Rechte zutreffen. Dies sind - in dieser Reihenfolge - der Eigentümer, die Benutzergruppe des Eigentümers und alle anderen.
Jedes Recht besitzt einen Zahlenwert. Addiert man die Zahlenwerte der zu vergebenen Zugriffsrechte, erhält man als Summe die einzusetzende Ziffer. Die drei Rechte sind Ausführen (Zahlenwert 1), Schreiben (2) und Lesen (4). Möchte man zum Beispiel Lesen und Ausführen zulassen, ergibt dies 4+1, also 5.
Es folgt ein Beispiel mit einer chmod() Anwendung:
Code für das Beispiel:
<?php
$datei = 'text.txt';
$rechte = '0755';
if (@chmod($datei, $rechte) == true) {
echo 'Bei der Datei: '.$datei.' wurden die
Rechte auf '.$rechte.' geändert.';
} else {
echo 'Bei der Datei: '.$datei.' konnten die
Rechte auf '.$rechte.' nicht geändert
werden.';
}
?>
Ausgabe des Beispiels:
Bei der Datei: 'text.txt' wurden die Rechte auf '0755' geändert.
Hätte chmod() im Beispiel wegen eines Fehlers etwas anderes als 'true' zurückgegeben, so würde die Ausgabe wie folgt lauten:
Bei der Datei: 'text.txt' konnten die Rechte auf '0755' nicht geändert werden.
Erklärung des Beispiels:
Die Datei 'text.txt' liegt im selben Ordner wie das Skript, was den Dateipfad erheblich vereinfacht. Die Rechte sollen auf '0755' geändert werden, was dem Eigentümer alle Rechte einräumt, allen anderen aber das Lesen und Ausführen der Datei. Und schließlich gibt chmod() bei korrekter Durchführung der Änderung 'true' zurück, was zur Ausgabe des ersten echo-Aufrufs führt.