obtener current basename __file__ directory php

basename - php current directory



Diferencia entre getcwd() y dirname(__ FILE__)? ¿Qué debería usar? (3)

Prueba esto.

Mueva su archivo a otro directorio, digamos testing2 .

Este debería ser el resultado.

/home/user/Desktop/testing/ /home/user/Desktop/testing/testing2/

Creo que getcwd se usa para operaciones de archivos, donde dirname(__FILE__) usa la constante mágica __FILE__ y usa la ruta real del archivo.

Editar: estaba equivocado.

Bueno, puedes cambiar el directorio de trabajo, con chdir .

Entonces si haces eso ...

chdir(''something''); echo getcwd()."/n"; echo dirname(__FILE__)."/n";

Esos deberían ser diferentes.

En PHP, ¿cuál es la diferencia entre

getcwd() dirname(__FILE__)

Ambos devuelven el mismo resultado cuando hago eco de CLI

echo getcwd()."/n"; echo dirname(__FILE__)."/n";

Devoluciones:

/home/user/Desktop/testing/ /home/user/Desktop/testing/

¿Cuál es el mejor para usar? ¿Importa? ¿Qué prefieren los desarrolladores de PHP más avanzados?


Si llama al archivo desde la línea de comando, la diferencia es clara.

cd foo php bin/test.php

dentro de test.php, getcwd() devolverá foo (su directorio de trabajo actual) y dirname(__FILE__) devolverá bin (el nombre de directorio del archivo que se está ejecutando).


__FILE__ es una constante mágica que contiene la ruta completa al archivo que está ejecutando. Si se encuentra dentro de una inclusión, su ruta será el contenido de __FILE__ .

Entonces con esta configuración:

/folder/random/foo.php

<?php echo getcwd() . "/n"; echo dirname(__FILE__) . "/n" ; echo "-------/n"; include ''bar/bar.php'';

/folder/random/bar/bar.php

<?php echo getcwd() . "/n"; echo dirname(__FILE__) . "/n";

Obtienes esta salida:

/folder/random /folder/random ------- /folder/random /folder/random/bar

Entonces getcwd() devuelve el directorio donde comenzó a ejecutar, mientras que dirname(__FILE__) depende del archivo.

En mi servidor web, getcwd() devuelve la ubicación del archivo que originalmente comenzó a ejecutarse. Usar la CLI es igual a lo que obtendrías si ejecutaras pwd . Esto es respaldado por la documentación de CLI SAPI y un comentario en la página del manual de getcwd :

el CLI SAPI, a diferencia de otros SAPI, NO cambia automáticamente el directorio de trabajo actual al que reside el script iniciado.

Asi como:

thom@griffin /home/thom $ echo "<?php echo getcwd() . ''/n'' ?>" >> test.php thom@griffin /home/thom $ php test.php /home/thom thom@griffin /home/thom $ cd .. thom@griffin /home $ php thom/test.php /home

Por supuesto, consulte también el manual en http://php.net/manual/en/function.getcwd.php

ACTUALIZACIÓN : desde PHP 5.3.0 también puede usar la constante mágica __DIR__ que es equivalente a dirname(__FILE__) .