PHP Obtiene el nombre del directorio actual

123

Tengo una página php dentro de una carpeta en mi sitio web.

Necesito agregar el nombre del directorio actual en una variable, por ejemplo:

$myVar = current_directory_name;

es posible?

Satch3000
fuente

Respuestas:

247
getcwd();

o

dirname(__FILE__);

o (PHP5)

basename(__DIR__) 

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

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

Puede usar basename()para obtener la parte final de la ruta :)

En su caso, diría que lo más probable es que desee utilizar getcwd(),dirname(__FILE__) es más útil cuando tiene un archivo que necesita incluir otra biblioteca y está incluido en otra biblioteca.

P.ej:

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

En tu common.phpnecesitas usar funciones en editor.php, entonces usas

common.php:

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

main.php:

require_once libs/common.php

De esa manera, cuando common.php está require'den main.php, la llamada de require_oncein se common.phpincluirá correctamente editor.phpen images/editor.phplugar de intentar buscar en el directorio actual donde main.phpse ejecuta.

Andreas Wong
fuente
5
Y basename(__DIR__)en PHP 5
Xeoncross
Esto me está dando todo el camino. ¿Hay alguna forma de obtener solo el nombre del directorio?
Satch3000
13
@ Satch3000basename(getcwd())
Andreas Wong
2
Tenga en cuenta que si usa una inclusión o una requerida, __DIR__es la ruta del archivo incluido y NO el directorio actual
Sebastien Horin
El uso me basename(__DIR__) salvó el día. ¡Muchas gracias por compartir!
Devner
18

Para obtener solo el nombre del directorio donde se ejecutó el script:

//Path to script: /data/html/cars/index.php
echo basename(dirname(__FILE__)); //"cars"
yesnik
fuente
11
echo basename(__DIR__); will return the current directory name only
echo basename(__FILE__); will return the current file name only
Ameer Ul Islam
fuente
2
Siempre que tenga PHP 5.3 o superior
falta el nombre para mostrar el
11

Por ejemplo

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

THIS_is_the_DIR_I_Want

Un Soultion que FUNCIONA:

$url = dirname(\__FILE__);
$array = explode('\\\',$url);
$count = count($array);
echo $array[$count-1];
usuario2169219
fuente
3
El OP parece haber aceptado ya una respuesta a su problema. Aunque claramente ha agregado valor, ¿necesita desahogar sus furstraciones aquí?
Dutts
stackoverflow.com/help/formatting explicará cómo poner las cosas en negrita evitando el uso de mayúsculas, lo que ha señalado con razón denota gritos en Internet.
Dutts
7

En realidad, encontré que la mejor solución es la siguiente:

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

si su directorio es www \ var \ path \ Current_Path

entonces esto devuelve Current_path

Andrés
fuente
4
Cuidado, en los servidores Linux no usamos barra invertida sino barra. PHP tiene una constante mágica para hacerlo multiplataforma, verPATH_SEPARATOR
renoirb
2

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

libs / images /index.php
Resultado: imágenes

MK2009
fuente
Bueno, creo que todos estaríamos de acuerdo en que Stack Overflow tiene algunos de los usuarios más pedantes de la red. Ese es un poco el punto. Tratar de obtener soluciones que sigan funcionando dentro de 20 años en un lugar extraño es complicado. Si algunos de nosotros nos equivocamos, eso va con el territorio. :) PD Yo no era el votante en contra.
Adam Chalcraft
1

Si tiene PATH y no quiere preocuparse si su script funciona en la carpeta que le interesa, entonces esto funciona:

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