2012-08-13 7 views
13

solo per confermare, sta utilizzando:Document Root PHP

$_SERVER["DOCUMENT_ROOT"] 

lo stesso che usare:/

in HTML.

Es. Se il documento corrente è:

folder/folder/folder/index.php 

ho potuto utilizzare (in HTML) per iniziare al roort:

/somedoc.html 

e di fare lo stesso in PHP avrei dovuto usare:

$_SERVER["DOCUMENT_ROOT"] . "/somedoc.html"; 

È corretto? C'è un modo più semplice per farlo?

risposta

18
<a href="<?php echo $_SERVER['DOCUMENT_ROOT'].'hello.html'; ?>">go with php</a> 
<br /> 
<a href="/hello.html">go to with html</a> 

Provalo e scopri che non sono esattamente gli stessi.

$ _SERVER [ 'DOCUMENT_ROOT'] rende un percorso di file effettivo (sul mio computer in esecuzione in quanto è proprio server, c:/wamp/www/

HTML della/rende la radice del URL del server, nel mio caso , localhost/

Ma c:. /wamp/www/hello.html e localhost/hello.html sono in realtà lo stesso file

+1

se si desidera utilizzarlo, per include(), è un problema diverso rispetto a un collegamento ipertestuale sopra. –

+0

Nessun motivo per pubblicare la mia risposta poiché questo è quello che stavo per dire. –

+0

Cosa c'è di diverso con include? – Andrew

5

Proprio / si riferisce alla radice del tuo sito web dalla cartella html pubblica DOCUMENT_ROOT si riferisce al percorso locale della cartella sul server che contiene il tuo sito Web.

Per esempio, Ho installato EasyPHP su una macchina ...

$_SERVER["DOCUMENT_ROOT"] mi dà file:///C:/Program%20Files%20(x86)/EasyPHP-5.3.9/www ma qualsiasi file con link a solo / sarà relativo alla cartella www.

Se si desidera assegnare il percorso assoluto a un file sul server (dalla radice del server) è possibile utilizzare DOCUMENT_ROOT. se vuoi dare il percorso assoluto a un file dalla radice del tuo sito web, usa solo /.

-2

Il modo più semplice per farlo è avere una buona struttura del sito e scriverlo come una costante.

DEFINE("BACK_ROOT","/var/www/"); 
+1

so che è vecchio ma mi sono imbattuto in questo, perché dovresti fare più costanti se hai già una costante del server definita php che esegue questa operazione, spreco di codice, CPU e memoria – DarkMukke

+0

L'idea è, indipendentemente da quanto profondo (in termini di cartelle) ci sia, questo lo rende così non dovrai mai scrivere codice relativo al script, diverso dal codice utilizzato per definire la radice. Lo uso per combattere il metodo Jerry-rigging utilizzato da molti programmatori oggi. –

+5

sì ma in questo modo lo script dipende dal sistema o dalla posizione, che non dovrebbe mai essere, le app devono essere portatili – DarkMukke