PHP Obtém o nome do diretório atual

123

Eu tenho uma página php dentro de uma pasta no meu site.

Preciso adicionar o nome do diretório atual em uma variável, por exemplo:

$myVar = current_directory_name;

Isso é possível?

Satch3000
fonte

Respostas:

246
getcwd();

ou

dirname(__FILE__);

ou (PHP5)

basename(__DIR__) 

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

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

Você pode usar basename()para obter a parte final do caminho :)

No seu caso, eu diria que você provavelmente está procurando usar o getcwd(), dirname(__FILE__)é mais útil quando você tem um arquivo que precisa incluir outra biblioteca e está incluído em outra biblioteca.

Por exemplo:

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

Em seu, common.phpvocê precisa usar funções em editor.php, então você usa

common.php:

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

main.php:

require_once libs/common.php

Dessa forma, quando common.php estiver require'dem main.php, a chamada de require_oncein common.phpincluirá corretamente editor.phpem em images/editor.phpvez de tentar procurar no diretório atual onde main.phpé executado.

Andreas Wong
fonte
5
E basename(__DIR__)em PHP 5
Xeoncross
Isso está me dando todo o caminho. Existe uma maneira de obter apenas o nome do diretório?
Satch3000,
13
@ Satch3000basename(getcwd())
Andreas Wong,
2
Observe que se você usar um include ou um obrigatório, __DIR__é o caminho do arquivo incluído e NÃO o diretório atual
Sebastien Horin
Usando basename(__DIR__) salvou o dia para mim. Muito obrigado por compartilhar!
Devner
18

Para obter apenas o nome do diretório onde o script foi executado:

//Path to script: /data/html/cars/index.php
echo basename(dirname(__FILE__)); //"cars"
Yesnik
fonte
11
echo basename(__DIR__); will return the current directory name only
echo basename(__FILE__); will return the current file name only
Ameer Ul Islam
fonte
2
Contanto que você tenha PHP 5.3 ou superior
Nome de exibição ausente
11

Por exemplo

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

THIS_is_the_DIR_I_Want

Uma alma que FUNCIONA:

$url = dirname(\__FILE__);
$array = explode('\\\',$url);
$count = count($array);
echo $array[$count-1];
user2169219
fonte
3
O OP parece já ter aceitado uma resposta para seu problema. Embora você claramente tenha agregado valor, você precisa desabafar aqui?
Dutts de
stackoverflow.com/help/formatting explicará como tornar as coisas ousadas evitando o uso de maiúsculas, que você apontou com toda a razão denota gritaria na internet.
Dutts de
7

Na verdade, descobri que a melhor solução é a seguinte:

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

se o seu diretório for www \ var \ path \ Current_Path

então isso retorna Current_path

Andrew
fonte
4
Cuidado, em servidores Linux não usamos barra invertida, mas sim barra. PHP tem uma constante mágica para torná-lo multiplataforma, vejaPATH_SEPARATOR
renoirb
2

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

libs / images /index.php
Resultado: imagens

MK2009
fonte
Bem, acho que todos concordamos que Stack Overflow tem alguns dos usuários mais pedantes da rede. Esse é o ponto. Tentar obter soluções que ainda funcionarão em 20 anos em um local estranho é complicado. Se alguns de nós estão confusos, isso vai com o território. :) PS Eu não fui o votante para baixo.
Adam Chalcraft
1

Se você tem PATH e não quer se preocupar se o seu script funciona na pasta em que está interessado, faça o seguinte:

basename(parse_url($_GET['dir_link'])['path'],PHP_URL_PATH)
Dziamid Harbatsevich
fonte