2010-09-04 20 views
7
rename('/images/old_name.jpg', '/images/new_name.jpg'); 

Este código da archivo no encontrado.Carpeta raíz PHP

La secuencia de comandos, donde se llaman los archivos se coloca dentro de la carpeta /source/.

Los archivos se pueden abrir desde http://site.com/images/old_name.jpg

cómo obtener estos archivos de raíz?

+0

[Esta pregunta FAQ] (http://stackoverflow.com/questions/3633753/anybody-knows-a- good-article-on-filesystem-basics) realmente necesita una buena respuesta –

+1

Incluso cuando lo haces bien, el archivo puede tardar unos minutos en aparecer en la carpeta de destino si es un poco grande. – jaisonDavis

Respuesta

29

rename es una función del sistema de archivos y requiere rutas del sistema de archivos. Pero parece que estás usando rutas URI.

Puede utilizar $_SERVER['DOCUMENT_ROOT'] anteponer la ruta a la raíz del documento:

rename($_SERVER['DOCUMENT_ROOT'].'/images/old_name.jpg', $_SERVER['DOCUMENT_ROOT'].'/images/new_name.jpg'); 

O para mayor flexibilidad, utilice dirname en la ruta de acceso al archivo actual __FILE__:

rename(dirname(__FILE__).'/images/old_name.jpg', dirname(__FILE__).'/images/new_name.jpg'); 

O utilice relativa caminos. Como estás en la carpeta /script, .. camina hasta un nivel de directorio:

rename('../images/old_name.jpg', '../images/new_name.jpg'); 
+0

en lugar de cambiar el nombre ('../ images/old_name.jpg', [...] usaría rename (dirname (dirname (\ _ \ _ FILE \ _ \ _)). '/ Images/old_name.jpg', [...] De esta forma sería relativo al archivo actual (el que tiene la llamada para cambiar el nombre), no el script en ejecución, que puede variar si la llamada para cambiar el nombre está en un archivo incluido. –

+0

@ Sebastián Grignoli: Sí , esa es otra buena opción. – Gumbo

6

En PHP la raíz (/) es la raíz del sistema de archivos no es el "Webroot". Si el php-archivo está en el directorio /source/ y las imágenes están en /source/images/ entonces esto va a trabajar:

rename('images/old_name.jpg', 'images/new_name.jpg'); 
Cuestiones relacionadas