Gegebenenfalls ist es in einem PHP-Code, der in eine Datei schreibt, wichtig zuerst zu überprüfen, ob die Datei überhaupt beschrieben werden kann oder nicht. Beispielsweise kann eine Datei mangels nötigen Rechten der ausführenden PHP-Datei nicht beschrieben werden. Für den Anwender treten danach unschöne PHP-Exceptions auf, welche man besser schon im Code abfängt.
Für dieses Problem gibt es die Funktion is_writeable(), welche als Parameter einen Dateipfad in Form einer Zeichenkette (String) entgegennimmt. Die Funktion gibt entweder true (Datei kann editiert werden) oder false (Datei kann nicht editiert werden) zurück.
Beispiel:
<?php
$datei = './csv_datei.csv';
$is_writeable = is_writeable($datei);
if ($is_writeable == true) {
echo sprintf("Die Datei:%s ist beschreibbar!", $datei);
/**
* Datei ändern ...
*/
} else {
echo sprintf("Die Datei:%s ist nicht beschreibbar!", $datei);
/**
* Rechte ändern der Datei oder so ...
*/
}
?>
Ausgabe:
Wenn Datei beschrieben werden kann: Die Datei: „Pfad_zur_Datei“ ist beschreibbar! Wenn Datei nicht beschrieben werden kann: Die Datei: „Pfad_zur_Datei“ ist nicht beschreibbar!
Erklärung:
Im obigen Beispiel werden zwei Variablen angelegt. Zum einen eine Variable mit dem Pfad zur Datei und zum anderen eine boolean-Variable, welche den Rückgabewert der Funktion is_writeable() speichert. Als Erstes wird der Variable $datei ein Pfad zu einer Datei auf dem Webserver angegeben. Im zweiten Befehl wird die Funktion is_writeable() aufgerufen. Als Parameter wird der Dateipfad, welcher in der Variable $datei gespeichert wurde, mit angegeben. Der Rückgabewert wird in der Variable gespeichert.
Danach wird mit einem simplen if-Statement überprüft, ob die Funktion true oder false zurückgegeben hat und dazu ein kleiner Text ausgegeben.
Häufigen Fragen zu der PHP-Funktion:
Was macht die PHP-Funktion is_writeable?
Die PHP-Funktion is_writeable prüft, ob auf eine Datei oder Verzeichnis schreibend zugegriffen werden kann.
Wie verwendet man is_writeable in PHP?
Man verwendet es, indem man es als ein Argument an die Funktion übergibt und den Rückgabewert als Boolesche Variable prüft (true/false).
Beispiel:
if (is_writeable($myFile)) { //... }
Welchen Rückgabewert hat die Funktion is_writeable?
Die Funktion is_writeable gibt einen booleschen Wert zurück (true/false).
Kann man mit der Funktion is_writable auch Verzeichnisse prüfen?
Ja, man kann mit der Funktion sowohl Dateien als auch Verzeichnisse prüfen.
Welche PHP-Version wird benötigt, um die Funktion is_writeable zu verwenden?
Die Funktion is_writeable ist in PHP ab Version 4 verfügbar.
Welchen Parameter erwartet die is_writeable-Funktion?
Die Funktion erwartet einen String mit dem Datei/Verzeichnisnamen als Parameter.
Wann wird false als Rückgabewert von is_writeable zurückgegeben?
False wird dann zurückgegeben, wenn auf die Datei/das Verzeichnis nicht schreibend zugegriffen werden kann (zum Beispiel beim fehlenden Schreibrecht).
Kann man mit der Funktion auch überprüfen, ob ein Verzeichnis existiert?
Nein, die Funktion kann nur überprüfen, ob schreibender Zugriff auf eine bestehende Datei oder Verzeichnis vorhanden ist. Um zu prüfen, ob ein Verzeichnis existiert, können andere Funktionen verwendet werden (z. B. file_exists()).
Was passiert genau im Hintergrund beim Aufruf von is_writable?
Bei Aufruf der Funktion ruft PHP eine Systemfunkion sogenannte „access()“ auf und prueft mithilfe dieser Systemfunkion, ob schreibender Zugriff besteht oder nicht (Rückgabe true/false).
Gibt es Alternativen zur PHP-Funktion is_writable?
Ja, es gibt alternativen Methoden, um festzustellen, ob auf eine Datei/Verzeichniss schreibend zugegriffen werden kann oder welche Rechte vorliegen (z. B. fileperms(), fopen() und chmod())