2009-04-10 14 views
6

Sto usando MAMP solo per il mio ambiente di sviluppo e non ho veramente capito la struttura delle cartelle di/var/www/nome-progetto/su un server web. Mi chiedo se sei intenzionato a indirizzare il server web alla cartella htdocs o dovrebbe puntare alla radice della cartella del progetto?/var/www/struttura di cartelle per il progetto PHP

Il motivo che mi chiedo è perché le librerie sono destinate ad esistere al di fuori della cartella htdocs per motivi di sicurezza, ma come sono indicai dall'applicazione web stesso? Sicuramente l'applicazione web non può accedere alle cartelle al di fuori della cartella htdocs se il server Web punta alla cartella htdocs per l'applicazione web?

risposta

9

Una soluzione semplice è quella di avere una struttura di cartelle in questo modo:

/var/www/project-name/ 
    + webroot/ 
    + libraries/ 

Point tua apache2 DocumentRoot alla directory webroot. Conservare tutte le librerie che non si desidera siano accessibili dal Web nella directory libraries. Nel codice php, utilizzare la direttiva include per accedere al codice delle biblioteche.

Il trucco è capire che php può includere qualsiasi file sul sistema a cui ha accesso in lettura. Una persona che naviga nel tuo sito web può accedere solo ai file all'interno della directory webroot.

+0

Questa è esattamente la risposta che stavo cercando. Grazie mille! – Kezzer

+0

@Kezzer, potresti spiegare come configurare il tuo MAMP in modo che punti lì? – doublejosh

0

si posiziona il biblioteche di include_path inaccessibile per l'utente generico PHP.

+0

Quindi apache punta a/var/www/project/htdocs/ma poi dici che hai index.php, potresti dire include_path ('/ var/www/project/mylib/lib.php')? – Kezzer

1

PHP può accedere a qualsiasi file nel file system per i quali l'utente del server Apache ha le autorizzazioni corrette. Su una macchina Linux che esegue apache senza host virtuali,/var/www è un posto comune da usare per la tua directory htdocs.

3

Se si dispone di più vhosts sullo stesso server, è piuttosto comune avere ciascun sito in una directory sotto /var/www e ognuno di questi ha una cartella htdocs, che viene montata come root Web. È quindi possibile avere registri e librerie specifiche dell'applicazione in una cartella sopra la radice Web. Ad esempio .:

/var/www/lolcats.com 
/var/www/lolcats.com/htdocs 
/var/www/lolcats.com/htdocs/index.php 
/var/www/lolcats.com/lib 
/var/www/lolcats.com/log 
0

è un'idea googd per mappare i vostri siti web locali nelle directory nello stesso modo come il vostro lavoro domini.

Spesso si dispone di più siti web su un singolo account di web hosting, in modo di configurazione host virtuali al rispecchiano la configurazione.

Se il vostro hosting condiviso è:

/var/www/root 
/var/www/root/website1 
/var/www/root/website2 
/var/www/root/website3 

Creare 3 host vitual sul PC locale, ma mantenere una struttura di file identico.

Inoltre, utilizzare le condizioni nei file di configurazione per impostare il sito deifferently a seconda della struttura file server, per garantire lo stesso file di configurazione funziona su entrambe le configurazioni. Ciò significa che mantieni il processo di costruzione in un'unica fase.

Problemi correlati