PHP Récupère le nom du répertoire courant


124

J'ai une page php dans un dossier de mon site Web.

J'ai besoin d'ajouter le nom du répertoire actuel dans une variable par exemple:

$myVar = current_directory_name;

Est-ce possible?

Réponses:


247
getcwd();

ou

dirname(__FILE__);

ou (PHP5)

basename(__DIR__) 

http://php.net/manual/en/function.getcwd.php

http://php.net/manual/en/function.dirname.php

Vous pouvez utiliser basename()pour obtenir la partie arrière du chemin :)

Dans votre cas, je dirais que vous cherchez probablement à utiliser getcwd(), dirname(__FILE__)est plus utile lorsque vous avez un fichier qui doit inclure une autre bibliothèque et est inclus dans une autre bibliothèque.

Par exemple:

main.php
libs/common.php
libs/images/editor.php

Dans votre, common.phpvous devez utiliser des fonctions dans editor.php, donc vous utilisez

common.php:

require_once dirname(__FILE__) . '/images/editor.php';

main.php:

require_once libs/common.php

De cette façon, lorsque common.php est require'ddans main.php, l'appel de require_oncein common.phpinclura correctement editor.phpdans images/editor.phpau lieu d'essayer de chercher dans le répertoire courant où main.phpest exécuté.


5
Et basename(__DIR__)en PHP 5
Xeoncross

Cela me donne tout le chemin. Existe-t-il un moyen d'obtenir uniquement le nom du répertoire?
Satch3000

13
@ Satch3000basename(getcwd())
Andreas Wong

2
Notez que si vous utilisez un include ou un required, __DIR__est le chemin du fichier inclus et PAS le répertoire courant
Sebastien Horin

Utiliser a basename(__DIR__) sauvé la journée pour moi. Merci beaucoup pour le partage!
Devner

19

Pour obtenir uniquement le nom du répertoire dans lequel le script a été exécuté:

//Path to script: /data/html/cars/index.php
echo basename(dirname(__FILE__)); //"cars"


11

Par exemple

Your Path = /home/serverID_name/www/your_route_Dir/

THIS_is_the_DIR_I_Want

Une Soultion qui FONCTIONNE:

$url = dirname(\__FILE__);
$array = explode('\\\',$url);
$count = count($array);
echo $array[$count-1];

3
Le PO semble avoir déjà accepté une réponse à leur problème. Bien que vous ayez clairement une valeur ajoutée, avez-vous besoin d'aérer vos furstrations ici?
Dutts

stackoverflow.com/help/formatting vous expliquera comment rendre les choses audacieuses en évitant l'utilisation de majuscules, ce que vous avez à juste titre souligné comme des cris sur Internet.
Dutts

7

En fait, j'ai trouvé que la meilleure solution est la suivante:

$cur_dir = explode('\\', getcwd());
echo $cur_dir[count($cur_dir)-1];

si votre répertoire est www \ var \ path \ Current_Path

alors cela retourne Current_path


4
Attention, sur les serveurs Linux, nous n'utilisons pas la barre oblique inverse mais la barre oblique. PHP a une constante magique pour le rendre multi-plateforme, voirPATH_SEPARATOR
renoirb

2

$myVar = str_replace('/', '', $_SERVER[REQUEST_URI]);

libs / images /index.php
Résultat: images


Eh bien, je pense que nous sommes tous d'accord pour dire que Stack Overflow a certains des utilisateurs les plus pédants du net. C'est un peu le point. Essayer d'obtenir des solutions qui fonctionneront encore dans 20 ans dans un endroit étrange est délicat. Si certains d'entre nous sont foutus, cela va tout simplement avec le territoire. :) ps je n'étais pas le down-votant.
Adam Chalcraft

1

Si vous avez PATH et que vous ne voulez pas vous inquiéter si votre script fonctionne dans le dossier qui vous intéresse, alors cela fonctionne:

basename(parse_url($_GET['dir_link'])['path'],PHP_URL_PATH)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.