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?

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.


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"


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

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


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


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)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.