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?

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.


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"


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

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


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


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)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.