2010-04-09 21 views
5

nel mio config.php dove ho tutte le costanti ho impostato il PERCORSO su un percorso assoluto.usa il percorso assoluto o relativo?

ma ciò significa che quando si sposta la cartella dell'applicazione devo modificare questo percorso.

Mi chiedevo se fosse meglio impostare un percorso relativo, in questo modo ogni volta che sposto la mia applicazione tra la cartella di produzione e quella di sviluppo, non devo cambiarla.

come si fa quando ci si sposta tra le cartelle?

+0

quanto interessante - una domanda che offre due alternative, che ha quattro risposte. Btw, relativo - ogni volta (hmm, conti $ _SERVER [] come relativo o assoluto?) – Mawg

+0

Sono sicuro che questo è stato chiesto prima. – staticsan

risposta

8

Il modo migliore che ho trovato è quello di effettuare le seguenti operazioni:

define("PATH", realpath(dirname(__FILE__))); 

Che ti dà la directory del file corrente. Se lo fai nel tuo file settings/bootstrap/init, lo avrai a disposizione della tua applicazione, e funzionerà con qualsiasi file system.

+0

Il mio metodo è simile, tranne l'annidamento delle funzioni. Ha importanza, o ho trascurato qualcosa? – alex

+0

Ah ah, bello. No, non dovrebbe importare. – zombat

+0

cosa significa realpath? e cosa succede senza di esso? –

3

__FILE__ è tuo amico.

1

IMO, i percorsi assoluti sono cattive notizie. Anche se non hai intenzione di muoverti, il tuo provider di hosting potrebbe trasferirti, come recentemente mi ha fatto DreamHost. Stavo bene .... Ma ci sono 14 riferimenti a "percorso" sul loro wiki: http://wiki.dreamhost.com/Server_Moves

+1

Ecco perché la dichiarazione costante era relativa a __FILE__, che sarà sempre valida, anche se il server si muove fisicamente. –

3
define('BASE_PATH', dirname(realpath(__FILE__))); 

Ciò renderà gli script più portatili.

includere un file come questo

include BASE_PATH . 'includes/header.php'; 
1

faccio tre cose per risolvere questo:

  1. Il primo è quello di utilizzare i percorsi relativi al file corrente e comprendono le cose usando dirname(__FILE__).

  2. Il secondo è utilizzare un caricatore include che tutte le pagine caricano. Questo file ha una sola responsabilità: trovare la directory include, solitamente tramite una chiamata relativa. Finché questa relazione relativa rimane, non ha bisogno di cambiare.

  3. mi piace anche per sostenere impostazioni personalizzate che appartengono al installazione piuttosto che il codebase. Questo viene fatto da un meccanismo di inclusione e sostituisce alcune impostazioni che saranno specifiche per il server su cui si trova il codice.

Problemi correlati