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__)
.