06-09-2022

Full_path en $_files: cómo obtener la ruta del archivo

Una de las novedades de la versión 8.1 de php es que se ha añadido el índice fullpath en $_FILES cuando se va a subir un fichero, o varios, al servidor.
Supongamos que en nuestro ordenador local tenemos la siguiente estructura de archivos:
directorioPadre
 ├── directorio1
 │└── fichero1.txt
 └── directorio2
 └── fichero2.txt
Si tenemos maquetado el formulario para subir varios ficheros al servidor y subimos los dos ficheros mostrados en el ejemplo y hacemos "var_dump($_FILES);" veremos lo siguiente:
array(1) {
 ["nombreCampoFile"]=> array(6) {
["full_path"]=> array(2) {
 [0]=> string(19) "directorioPadre/directorio1/fichero1.txt"
 [1]=> string(19) "directorioPadre/directorio2/fichero2.txt"
}
// ...
 }
}
Php solo analiza la información de la ruta relativa enviada por el navegador/user-agent y pasa esa información al array $_FILES. No hay garantía de que los valores en el array full_path contengan una estructura de directorio real, y las aplicaciones php no deben confiar en esta información.
Las aplicaciones que aceptan la carga de un directorio y almacenan los archivos según los valores de la ruta completa deben asegurarse de que la información de la ruta completa se valide correctamente antes de mover los archivos cargados a un directorio anidado.