Position actuelle: Accueil> Derniers articles> Utilisez PHP RealPath pour obtenir le chemin absolu vers un dossier

Utilisez PHP RealPath pour obtenir le chemin absolu vers un dossier

gitbox 2025-06-07

Introduction à la fonction realPath ()

La syntaxe de base de la fonction realPath () est la suivante:

 string realpath(string $path)
  • $ PATH : Le chemin vers l'analyse.

  • Valeur de retour: renvoie le chemin absolu normalisé lorsqu'il est réussi; Renvoie false lors de l'échec.

Exemple d'utilisation

Voici un exemple de base pour obtenir le chemin absolu vers un dossier dans le répertoire actuel:

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

if ($absolutePath !== false) {
    echo "Le chemin absolu est: $absolutePath";
} else {
    echo "Le chemin n'existe pas ou ne peut pas être analysé。";
}

Choses à noter

1. Le chemin cible doit exister

RealPath () ne peut que l'analyse du chemin existant réel . Si le chemin dans lequel vous avez traversé n'existe pas dans le système de fichiers, la fonction renvoie false . Par conséquent, lorsque vous l'utilisez, il est recommandé de déterminer d'abord si le chemin existe:

 if (file_exists($relativePath)) {
    $real = realpath($relativePath);
    echo $real;
} else {
    echo "Le chemin n'existe pas";
}

2. Liens de symbole et normalisation du chemin

realPath () analyse le lien symbolique et élimine des symboles tels que .. et . sur le chemin. Par exemple:

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

Cet appel renverra le chemin absolu de projeter / journaux .

3. Différences par rapport aux chemins d'URL

Il convient de noter que RealPath () est un outil de résolution de chemin basé sur le système de fichiers serveur, pas un outil basé sur URL. Si vous traitez avec des URL, telles que https://gitbox.net/uploads/images , cela ne peut pas être analysé via realPath () . Vous ne devez l'utiliser que pour le chemin du fichier du serveur:

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

Ici, nous avons épissé les chemins que nous avons épissés se résoudront à quelque chose comme:

 /var/www/html/uploads/images

Plutôt:

 https://gitbox.net/uploads/images

4. Utilisez RealPath () pour améliorer la sécurité

Lors du traitement des paramètres de chemin téléchargés par les utilisateurs, RealPath () peut être utilisé comme mécanisme de protection de la sécurité pour déterminer si le chemin est hors limites. Par exemple:

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

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

if (strpos($fullPath, $baseDir) === 0) {
    echo "Chemin sûr: $fullPath";
} else {
    echo "Le chemin d'accès illégal est bloqué。";
}

Cette méthode empêche les utilisateurs d'accéder à des fichiers sensibles au serveur à travers des chemins comme ../../../etc/passwd .