PHP – Saber carpeta destino

Saber en PHP la carpeta destino donde vamos a trabajar. Parece un poco lioso, pero en el siguiente ejemplo lo entenderéis.

Supongamos que tenemos un fichero .php donde ejecutamos una orden de copiar ficheros de un lado a otro. Pero cuando te ves en la tarea, cómo se donde estoy ejecutando el php, y dónde están las carpetas con las que trabajaremos.

Concretemos más. Hemos recibido en nuestro PHP un fichero por POST. Ahora debemos moverlo a donde nos interesa:

move_uploaded_file($_FILES['file']['tmp_name'], $destino);

La orden es sencilla, pero el destino es difícil en muchas ocasiones. Cada servidor es diferente y es difícil trabajar con enlaces absolutos. Lo mejor es trabajar con enlaces relativos.

Para saber donde exactamente dónde estamos ejecutando nuestro .php, utilizaremos la orden siguiente:

echo getcwd();

Esto nos devuelve en qué carpeta estamos ejecutando el fichero. Ahora que lo sabemos, podemos jugar para montar el destina:

Supongamos que ejecutamos la orden y nos da que estamos en (el fichero .php está aquí):

/app/controllers/

Y que el fichero que recibimos, lo queremos grabar en:

/media/

Pues bien, ya sabemos donde estamos y a donde vamos, por lo que trabajando con enlaces relativos, nuestro destino sería:

../../media

Bajamos dos carpetas /controllers y /app y nos metemos en /media

La orden final nos quedaría algo así:

move_uploaded_file($_FILES['file']['tmp_name'], "../../media");

Esto que parece obvio, no lo es tanto cuando trabajas. en diferentes servidores o debes realizar diferentes tareas con ficheros. Además, deberemos tener en cuenta el tema de los permisos de carpetas…

Espero que os haya sido de utilidad el fichero: PHP – Saber carpeta destino


Más información