2009-04-10 5 views
6

J'utilise MAMP uniquement pour mon environnement de développement et je n'ai pas vraiment compris la structure des dossiers de/var/www/nom-projet/sur un serveur web. Je me demande si vous êtes censé pointer le serveur Web vers le dossier htdocs ou il est censé pointer vers la racine du dossier du projet?/var/www/structure de dossier pour le projet PHP

La raison pour laquelle je demande est parce que les bibliothèques sont censées exister en dehors du dossier htdocs à des fins de sécurité, mais comment sont-elles pointées à partir de l'application Web elle-même? Sûrement l'application Web ne peut pas accéder aux dossiers en dehors du dossier htdocs si le serveur Web pointe vers le dossier htdocs pour l'application Web?

Répondre

9

Une solution simple est d'avoir une structure de dossiers comme ceci:

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

point votre apache2 DocumentRoot dans le répertoire webroot. Gardez toutes les bibliothèques que vous ne voulez pas accessibles depuis le web dans le répertoire libraries. Dans votre code php, utilisez la directive include pour accéder au code des bibliothèques.

L'astuce consiste à comprendre que php peut inclure n'importe quel fichier sur votre système auquel il a accès en lecture. Une personne qui consulte votre site Web peut uniquement accéder aux fichiers de votre répertoire de site Web.

+0

C'est exactement la réponse que je cherchais. Merci beaucoup! – Kezzer

+0

@Kezzer, pourriez-vous expliquer comment configurer votre MAMP pour pointer là? – doublejosh

0

Vous placez les bibliothèques dans PHP include_path qui est inaccessible à l'utilisateur général.

+0

Donc, est-ce que apache pointe sur/var/www/project/htdocs/mais alors disons que vous avez index.php, vous pouvez dire include_path ('/ var/www/project/mylib/lib.php')? – Kezzer

1

PHP peut accéder à n'importe quel fichier dans le système de fichiers pour lequel l'utilisateur du serveur apache a les permissions correctes. Sur une machine Linux exécutant Apache sans hôtes virtuels,/var/www est un endroit commun à utiliser pour votre répertoire htdocs.

3

Si vous avez plusieurs serveurs virtuels sur le même serveur, il est assez courant d'avoir chaque site dans un répertoire sous /var/www, et chacun d'eux a un dossier htdocs, qui est monté en tant que racine Web. Vous pouvez ensuite avoir des journaux et des bibliothèques spécifiques à l'application dans un dossier au-dessus de la racine Web. Par exemple .:

/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

C'est une bonne idée de cartographier vos sites Web locaux dans des répertoires de la même manière que vos domaines fonctionnent.

Souvent, vous avez plusieurs sites Web sur un même compte d'hébergement Web, configurez les hôtes virtuels pour qu'ils reflètent la configuration.

Si votre hébergement est partagé:

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

Créer 3 hôtes vitual sur votre PC local, mais garder une structure de fichier identique. En outre, utilisez les conditions de vos fichiers de configuration pour configurer le site de manière différente en fonction de la structure du fichier du serveur, afin de garantir que le même fichier de configuration fonctionne sur les deux configurations. Cela signifie que vous gardez votre processus de construction en une étape.

Questions connexes