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


124

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

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

$myVar = current_directory_name;

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

Ответы:


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"


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];

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


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

1

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

basename(parse_url($_GET['dir_link'])['path'],PHP_URL_PATH)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.