Rutas relativas en PHP
Como ya sabes, en el parámetro de la función file_get_contents
debes escribir el nombre del archivo. Sin embargo, esto funciona
solo si el archivo a leer se encuentra
en la misma carpeta desde la cual se ejecuta nuestro script.
Si el archivo está en otro lugar, entonces en el parámetro de la función debes escribir la ruta a ese archivo.
Veamos un ejemplo.
Ejemplo
Supongamos que tenemos la siguiente estructura de archivos:
- index.php
- /directory/
- test.txt
Leamos el contenido del archivo de texto. Para ello, además del nombre del archivo, necesitaremos especificar también la carpeta en la que se encuentra:
<?php
echo file_get_contents('directory/test.txt');
?>
Ejemplo
Supongamos que tenemos la siguiente estructura de archivos:
- /script/
- index.php
- test.txt
En este caso, el intento de leer nuestro archivo, especificando solo su nombre como ruta, terminará con un error:
<?php
echo file_get_contents('test.txt'); // dará un error
?>
¿Por qué se produce el error? El hecho es que en el parámetro de la función escribimos el nombre del archivo. Esto significa que el archivo a leer debe ubicarse en la misma carpeta que el script en ejecución.
Sin embargo, nuestro archivo a leer está un nivel más arriba, es decir, en la carpeta que contiene la carpeta del script.
En este caso, debemos indicar explícitamente en la ruta
del archivo, que este archivo debe buscarse un nivel
más arriba. Para ello, antes del nombre del archivo se debe
escribir ../. Hagámoslo:
<?php
echo file_get_contents('../test.txt'); // el archivo será leído
?>
Ejemplo
Supongamos que tenemos la siguiente estructura de archivos:
- /script/
- index.php
- /directory/
- test.txt
En este caso, al leer el archivo, primero saldremos un nivel arriba, y luego indicaremos la ruta a nuestro archivo relativa a ese nivel:
<?php
echo file_get_contents('../directory/test.txt');
?>
Ejemplo
Supongamos que tenemos la siguiente estructura de archivos:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
En este caso, necesitaremos subir dos niveles:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Tareas prácticas
Escribe el código que lea el contenido del archivo de texto:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Escribe el código que lea el contenido del archivo de texto:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Escribe el código que lea el contenido del archivo de texto:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Escribe el código que lea el contenido del archivo de texto:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/