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

Questo codice fornisce file non trovato.cartella radice PHP

Script, dove i file vengono chiamati è inserito nella cartella /source/.

file possono essere aperti da http://site.com/images/old_name.jpg

Come ottenere questi file da root?

+0

[Questo FAQ domanda] (http://stackoverflow.com/questions/3633753/anybody-knows-a- good-article-on-filesystem-basic) ha davvero bisogno di una buona risposta –

+1

Anche se lo fai bene, il file può richiedere alcuni minuti per apparire nella cartella dest se è un po 'grande. – jaisonDavis

risposta

29

rename è una funzione di file system e richiede percorsi del file system. Ma sembra che tu stia utilizzando i percorsi URI.

È possibile utilizzare $_SERVER['DOCUMENT_ROOT'] anteporre il percorso alla radice del documento:

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

O per una maggiore flessibilità, utilizzare dirname sul percorso del file corrente __FILE__:

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

Oppure utilizzare relativa percorsi. Come siete nella cartella /script, .. passeggiate di un livello di directory fino:

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

invece di rinominare ('../ images/old_name.jpg', [...] vorrei usare rinomina (dirname (dirname (\ _ \ _ FILE \ _ \ _)). '/ Images/old_name.jpg', [...] In questo modo sarebbe relativo al file corrente (quello con la chiamata da rinominare), non allo script in esecuzione, che può variare se la chiamata a rinominare è in un file incluso. –

+0

@ Sebastián Grignoli: Sì , questa è un'altra buona opzione. – Gumbo

6

In PHP radice (/) è la radice del filesystem non il "webroot". Se il php-file si trova nella directory /source/ e le immagini sono in /source/images/ allora questo lavoro:

rename('images/old_name.jpg', 'images/new_name.jpg'); 
Problemi correlati