W3docs

getcwd()

Apprenez comment getcwd() retourne le répertoire de travail courant en PHP, quand elle retourne false et comment elle diffère de __DIR__.

La fonction PHP getcwd()

getcwd() est une fonction PHP intégrée qui retourne le répertoire de travail courant — le répertoire contre lequel PHP résout les chemins de fichiers relatifs. Elle ne prend aucun argument et retourne le chemin absolu sous forme de string, ou false en cas d'échec.

Cette page couvre la syntaxe, la signification réelle de la valeur de retour, les cas où elle retourne false, et la différence entre getcwd(), la constante magique __DIR__ et la fonction chdir().

Syntaxe

getcwd(): string|false
  • Paramètres : aucun.
  • Valeur de retour : le chemin absolu du répertoire de travail courant en cas de succès, ou false en cas d'échec (par exemple, lorsqu'un répertoire parent du chemin courant n'a pas le bit de permission lecture ou recherche activé).

Le répertoire de travail est un état global du processus. Il commence par le répertoire depuis lequel PHP a été lancé, et non le répertoire où se trouve le script en cours d'exécution. Sur un serveur web, il s'agit généralement de la racine des documents ou du répertoire de démarrage du serveur ; en ligne de commande, c'est le répertoire depuis lequel vous avez lancé le script.

Exemple de base

<?php
echo getcwd();

Résultat (le chemin exact dépend de l'endroit où le script est exécuté) :

/home/user/public_html

Gestion des échecs

Puisque getcwd() peut retourner false, traitez le résultat comme string|false plutôt que de supposer qu'il s'agit d'une string. Cela est important lorsque vous construisez des chemins à partir de ce résultat — la concaténation de false produit silencieusement un préfixe vide.

<?php
$dir = getcwd();

if ($dir === false) {
    echo "Unable to determine the current working directory.";
} else {
    echo "Working in: $dir";
}

Construction de chemins de fichiers

Une utilisation courante consiste à résoudre un chemin relatif à l'emplacement depuis lequel le script est exécuté, puis à effectuer des opérations sur les fichiers à cet endroit. Vérifiez toujours que le fichier a bien été ouvert avant d'y écrire :

<?php
$current_dir = getcwd();
$file_path = $current_dir . DIRECTORY_SEPARATOR . 'test.txt';

$file_handle = fopen($file_path, 'w');

if ($file_handle === false) {
    echo "Could not open file for writing.";
} else {
    fwrite($file_handle, 'This is a test file.');
    fclose($file_handle);
    echo "File written to: $file_path";
}

L'utilisation de la constante DIRECTORY_SEPARATOR plutôt qu'un / codé en dur permet de garantir la validité du chemin sur tous les systèmes d'exploitation. Consultez fopen() pour connaître les modes de fichiers disponibles.

getcwd() vs. DIR

C'est la source d'erreurs la plus fréquente. getcwd() retourne le répertoire de travail d'exécution, qui peut changer. __DIR__ est résolu à la compilation et pointe toujours vers le répertoire du fichier source courant — il ne change jamais, même après un appel à chdir().

  • Utilisez __DIR__ pour inclure des fichiers ou charger des ressources situées à côté de votre script (require __DIR__ . '/config.php';). C'est presque toujours ce que vous voulez pour les chemins relatifs au projet.
  • Utilisez getcwd() lorsque vous avez réellement besoin de savoir depuis quel endroit le processus a été démarré, par exemple dans un outil CLI qui opère sur le dossier courant de l'utilisateur.

Le répertoire de travail peut être modifié avec chdir() :

<?php
echo getcwd(), PHP_EOL;   // e.g. /home/user/project
chdir('..');
echo getcwd(), PHP_EOL;   // parent directory, e.g. /home/user

Fonctions associées

  • chdir() — modifier le répertoire de travail courant.
  • realpath() — développer un chemin relatif en chemin absolu canonique.
  • dirname() — obtenir la partie répertoire parent d'un chemin.
  • scandir() — lister les entrées d'un répertoire.

Conclusion

getcwd() retourne le chemin absolu du répertoire de travail courant du processus, ou false s'il ne peut pas être lu. Vérifiez la présence de false avant d'utiliser le résultat, préférez DIRECTORY_SEPARATOR pour assembler des chemins, et utilisez plutôt __DIR__ lorsque vous avez besoin d'un chemin relatif au fichier script plutôt qu'au répertoire d'exécution.

Pratique

Pratique
Que fait la fonction getcwd() en PHP ?
Que fait la fonction getcwd() en PHP ?
Was this page helpful?