PHP Получить имя текущего каталога

124

У меня есть php-страница в папке на моем веб-сайте.

Мне нужно добавить имя текущего каталога в переменную, например:

$myVar = current_directory_name;

Это возможно?

Satch3000
источник

Ответы:

247
getcwd();

или

dirname(__FILE__);

или (PHP5)

basename(__DIR__) 

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

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

Вы можете использовать basename()для получения конечной части пути :)

В вашем случае я бы сказал, что вы, скорее всего, захотите использовать getcwd(), dirname(__FILE__)это более полезно, когда у вас есть файл, который должен включать другую библиотеку и включен в другую библиотеку.

Например:

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

В вашем common.phpвам нужно использовать функции editor.php, поэтому вы используете

common.php:

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

main.php:

require_once libs/common.php

Таким образом , когда common.php находится require'dв main.php, вызов require_onceв common.phpправильно включает editor.phpв images/editor.phpвместо того , чтобы искать в текущей директории , где main.phpвыполняется.

Андреас Вонг
источник
5
И basename(__DIR__)в PHP 5
Xeoncross
Это дает мне весь путь. Есть ли способ получить только имя каталога?
Satch3000,
13
@ Satch3000basename(getcwd())
Андреас Вонг
2
Обратите внимание: если вы используете include или required, __DIR__это путь к включенному файлу, а НЕ текущий каталог
Себастьян Хорин
Использование basename(__DIR__) спасло меня. Большое спасибо за то, что поделился!
Devner
19

Чтобы получить только имя каталога, в котором выполнялся скрипт:

//Path to script: /data/html/cars/index.php
echo basename(dirname(__FILE__)); //"cars"
yesnik
источник
11
echo basename(__DIR__); will return the current directory name only
echo basename(__FILE__); will return the current file name only
Амир Уль Ислам
источник
2
Если у вас PHP 5.3 или выше
Отображаемое имя отсутствует
11

Например

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

THIS_is_the_DIR_I_Want

ДЕЙСТВУЮЩАЯ ДУША:

$url = dirname(\__FILE__);
$array = explode('\\\',$url);
$count = count($array);
echo $array[$count-1];
user2169219
источник
3
OP, похоже, уже принял ответ на свою проблему. Несмотря на то, что вы явно добавили ценности, нужно ли вам здесь выходить на новый уровень?
Dutts
stackoverflow.com/help/formatting объяснит, как сделать вещи жирными, избегая использования заглавных букв, что, как вы совершенно правильно указали, означает крик в Интернете.
Dutts
7

На самом деле я нашел лучшее решение:

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

если ваш каталог www \ var \ path \ Current_Path

тогда это возвращает Current_path

Андрей
источник
4
Будьте осторожны, на серверах Linux мы используем не обратную косую черту, а косую черту. PHP имеет магическую константу, которая делает его кроссплатформенным, см.PATH_SEPARATOR
renoirb
2

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

libs / images /index.php
Результат: images

MK2009
источник
Что ж, я думаю, мы все согласимся с тем, что у Stack Overflow одни из самых педантичных пользователей в сети. В том-то и дело. Пытаться найти решения, которые будут работать через 20 лет в странном регионе, сложно. Если кто-то из нас облажался, то это просто касается территории. :) ps Я не был проигравшим.
Адам Чалкрафт
1

Если у вас есть PATH и вы не хотите беспокоиться о том, работает ли ваш скрипт в интересующей вас папке, тогда это сработает:

basename(parse_url($_GET['dir_link'])['path'],PHP_URL_PATH)
Дзиамид Харбацевич
источник