Signatur
Beschreibung
getcwd() liefert den absoluten Pfad des Verzeichnisses, in dem der PHP-Prozess aktuell arbeitet. Dies entspricht dem Verzeichnis, das als Basis für relative Pfadangaben verwendet wird, sofern keine expliziten absoluten Pfade angegeben wurden.
Die Funktion ist besonders nützlich, wenn Skripte dynamisch Dateien laden oder schreiben müssen und der genaue Ausführungskontext nicht fest kodiert werden soll. In Kombination mit chdir() lässt sich das Arbeitsverzeichnis gezielt wechseln und anschließend wieder auf den ursprünglichen Pfad zurücksetzen.
Im CLI-Modus entspricht das Arbeitsverzeichnis in der Regel dem Verzeichnis, aus dem der PHP-Interpreter aufgerufen wurde. Im Webserver-Kontext (z. B. Apache, Nginx) ist es häufig das Document-Root oder das Verzeichnis des aufgerufenen Skripts – was je nach Serverkonfiguration variieren kann.
Schlägt die Ermittlung fehl (z. B. wegen fehlender Leserechte auf einem übergeordneten Verzeichnis unter Unix), gibt die Funktion false zurück.
Rückgabewert
string zurück. Im Fehlerfall (z. B. unzureichende Berechtigungen) wird false zurückgegeben.Beispiele
Aktuelles Arbeitsverzeichnis ausgeben
<?php
$cwd = getcwd();
if ($cwd !== false) {
echo 'Aktuelles Verzeichnis: ' . $cwd;
} else {
echo 'Konnte das Arbeitsverzeichnis nicht ermitteln.';
}
Verzeichnis wechseln und zurückwechseln
<?php
$originalDir = getcwd();
echo 'Vorher: ' . $originalDir . PHP_EOL;
if (chdir('/tmp')) {
echo 'Nachher: ' . getcwd() . PHP_EOL;
// ... Operationen im temporären Verzeichnis ...
chdir($originalDir);
echo 'Zurück: ' . getcwd() . PHP_EOL;
} else {
echo 'Verzeichniswechsel fehlgeschlagen.' . PHP_EOL;
}
Pfad relativ zum Skript aufbauen
<?php
// Sicherstellen, dass das Arbeitsverzeichnis das Skriptverzeichnis ist
chdir(__DIR__);
$configFile = getcwd() . '/config/app.php';
if (file_exists($configFile)) {
echo 'Konfiguration gefunden: ' . $configFile;
} else {
echo 'Konfigurationsdatei nicht gefunden.';
}
// Wichtig · Fallstricke
Berechtigungen: Unter Unix/Linux kann getcwd() false zurückgeben, wenn der PHP-Prozess keine Leserechte auf eines der übergeordneten Verzeichnisse besitzt – selbst wenn der aktuelle Ordner selbst zugänglich ist.
Webserver-Kontext: Das Arbeitsverzeichnis ist im Webserver-Betrieb nicht immer identisch mit __DIR__ (dem Verzeichnis der aktuellen Datei). Für zuverlässige, skriptbezogene Pfade empfiehlt sich daher die Verwendung von __DIR__ statt getcwd().
Symbolische Links: Auf manchen Systemen kann getcwd() den aufgelösten (realen) Pfad ohne symbolische Links zurückgeben, was von der über chdir() gesetzten Pfadangabe abweichen kann.