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?

Satch3000
la source

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é.

Andreas Wong
la source
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"
yesnik
la source
11
echo basename(__DIR__); will return the current directory name only
echo basename(__FILE__); will return the current file name only
Ameer Ul Islam
la source
2
Tant que vous avez PHP 5.3 ou supérieur
Le nom d'affichage est manquant le
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];
user2169219
la source
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

Andrew
la source
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

MK2009
la source
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)
Dziamid Harbatsevich
la source