Hasta donde yo sé, se supone que php getcwd()
(y funciones similares, por ejemplo dirname(__FILE__)
) devuelven el directorio actual del archivo que se está ejecutando.php getcwd() resolviendo el destino del enlace simbólico en lugar del directorio actual
Si el directorio actual pasa a ser un enlace simbólico a otro directorio, php (presumiblemente en conjunto con Apache) se supone que devolver la ruta que muestra el nombre del enlace simbólico como el 'directorio' que se encuentra.
Ejemplo :
from /var/www,
directory 'one' contains index.php
symlink 'two' points at directory 'one'
one/index.php: <?php echo getcwd(); ?>
Acceso http://localhost/two/index.php en un navegador muestra /var/www/one
.
Yo esperaría que muestran /var/www/two
¿Alguien sabe si esto es un PHP o Apache ajuste puedo cambiar? ¿O no puedo usar los enlaces simbólicos de esta manera?
¿Lo descubrió? Estoy interesado en este mismo caso de uso. – kalenjordan
¿Apache está configurado para seguir a symLinks? Me gusta 'Options FollowSymLinks' –
No creo que esto tenga nada que ver con Apache. Es una "característica" de PHP. Si ingresa esto en la línea de comando 'mkdir a; ln -s a b; php -r 'chdir ("b"); echo getcwd(); '', php te mostrará que estás en un directorio llamado' a ', aunque chdir() ed a' b '. – edam