Signatur
Beschreibung
is_writeable() ist ein direkter Alias der Funktion is_writable() und verhält sich in jeder Hinsicht identisch. Die Funktion prüft, ob der aktuell ausführende PHP-Prozess Schreibrechte auf die angegebene Datei oder das angegebene Verzeichnis besitzt.
Es empfiehlt sich, bevorzugt den kanonischen Namen is_writable() zu verwenden, da Aliase in zukünftigen PHP-Versionen theoretisch entfernt werden könnten. is_writeable() existiert lediglich aus historischen Kompatibilitätsgründen (alternative englische Schreibweise).
Die Funktion berücksichtigt Betriebssystem-Dateiberechtigungen sowie auf POSIX-Systemen Benutzer- und Gruppenrechte des PHP-Prozesses (oft der Webserver-User). Das Ergebnis wird intern gecacht – mit clearstatcache() kann dieser Cache geleert werden, falls sich Rechte dynamisch geändert haben.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Pfad zur zu prüfenden Datei oder zum Verzeichnis. Kann ein absoluter oder relativer Pfad sein. |
Rückgabewert
true zurück, wenn die Datei oder das Verzeichnis existiert und beschreibbar ist; andernfalls false.Beispiele
Schreibbarkeit einer Datei prüfen
<?php
$datei = '/var/www/html/uploads/daten.txt';
if (is_writeable($datei)) {
file_put_contents($datei, 'Neue Daten');
echo 'Datei erfolgreich beschrieben.';
} else {
echo 'Fehler: Datei ist nicht beschreibbar.';
}
Schreibbarkeit eines Upload-Verzeichnisses prüfen
<?php
$uploadDir = '/var/www/html/uploads';
if (is_writeable($uploadDir)) {
echo 'Das Verzeichnis ist beschreibbar – Upload möglich.';
} else {
echo 'Das Verzeichnis ist NICHT beschreibbar. Bitte Rechte prüfen (z. B. chmod 775).';
}
// Wichtig · Fallstricke
Cache-Verhalten: PHP cached die Ergebnisse von Dateistatistik-Funktionen wie is_writeable(). Wenn sich Dateiberechtigungen innerhalb eines Skript-Laufs ändern, muss clearstatcache() aufgerufen werden, um veraltete Ergebnisse zu vermeiden.
Sicherheitshinweis: Die Prüfung per is_writeable() und der nachfolgende Schreibvorgang sind keine atomare Operation. Zwischen beiden Schritten könnte sich die Berechtigungslage ändern (TOCTOU-Problem). Fehler beim eigentlichen Schreibvorgang sollten daher stets separat behandelt werden.
Alias: Es wird empfohlen, statt is_writeable() den primären Funktionsnamen is_writable() zu verwenden, um künftige Kompatibilitätsprobleme zu vermeiden.