Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie PHP RealPath, um den absoluten Pfad zu einem Ordner zu erhalten

Verwenden Sie PHP RealPath, um den absoluten Pfad zu einem Ordner zu erhalten

gitbox 2025-06-07

Einführung in Realpath () Funktion

Die grundlegende Syntax der RealPath () -Funktion lautet wie folgt:

 string realpath(string $path)
  • $ PATH : Der Weg zum Analysen.

  • Rückgabewert: Gibt den normalisierten absoluten Weg zurück, wenn er erfolgreich ist; Gibt falsche zurück, wenn es fehlgeschlagen ist.

Beispiel für die Nutzung

Hier ist ein grundlegendes Beispiel dafür, dass der absolute Pfad zu einem Ordner im aktuellen Verzeichnis einbezogen wird:

 $relativePath = 'uploads/images';
$absolutePath = realpath($relativePath);

if ($absolutePath !== false) {
    echo "Der absolute Weg ist: $absolutePath";
} else {
    echo "Der Weg existiert nicht oder kann nicht analysiert werden。";
}

Dinge zu beachten

1. Der Zielpfad muss existieren

RealPath () kann nur den tatsächlichen vorhandenen Pfad analysieren. Wenn der Pfad, den Sie übergeben, im Dateisystem nicht vorhanden ist, gibt die Funktion falsch zurück. Bei der Verwendung wird daher empfohlen, zuerst festzustellen, ob der Pfad vorhanden ist:

 if (file_exists($relativePath)) {
    $real = realpath($relativePath);
    echo $real;
} else {
    echo "Der Weg existiert nicht";
}

2. Symbolverbindungen und Pfadnormalisierung

RealPath () analysiert die symbolische Verbindung und eliminiert Symbole wie .. und . auf dem Weg. Zum Beispiel:

 $path = '../project/./uploads/../logs';
echo realpath($path);

Dieser Anruf gibt den absoluten Pfad zu Projekt/Protokollen zurück.

3.. Unterschiede zwischen URL -Pfaden

Es ist zu beachten, dass RealPath () ein Tool zur Pfadauflösung basiert, das auf dem Serverdateisystem basiert und kein URL-basierter Tool. Wenn Sie mit URLs wie https://gitbox.net/uploads/images zu tun haben, kann dies nicht über RealPath () analysiert werden. Sie sollten es nur für den Serverdateipfad verwenden:

 $serverPath = $_SERVER['DOCUMENT_ROOT'] . '/uploads/images';
$real = realpath($serverPath);

Hier haben wir die Wege gespleißt, die wir gespleißt werden, werden sich zu so etwas beschränken:

 /var/www/html/uploads/images

Stattdessen:

 https://gitbox.net/uploads/images

4. Verwenden Sie RealPath (), um die Sicherheit zu verbessern

Wenn die von den Benutzern hochgeladenen Verarbeitung von Pfadparametern verarbeitet werden, kann RealPath () als Sicherheitsschutzmechanismus verwendet werden, um festzustellen, ob der Pfad keine Grenzen ist. Zum Beispiel:

 $userPath = $_GET['path'];
$baseDir = realpath('/var/www/gitbox/uploads');

$fullPath = realpath($baseDir . '/' . $userPath);

if (strpos($fullPath, $baseDir) === 0) {
    echo "Sicherer Weg: $fullPath";
} else {
    echo "Der illegale Zugangspfad ist blockiert。";
}

Diese Methode verhindert, dass Benutzer auf server-sensitive Dateien über Pfade wie ../../../etc/passwd zugreifen.