2011-01-11 3 views
4

J'écris une bibliothèque PHP basée sur le framework zend. Ma bibliothèque est utilisée par plusieurs de mes projets Web. Je ne sais pas où je devrais mettre ma bibliothèque. Il semble logique de l'avoir en dehors de la racine du document des projets individuels, donc je ne dois pas maintenir la bibliothèque dans chaque projet individuel. Ma configuration actuelle ressemble à ceci:Bibliothèque PHP à l'intérieur ou à l'extérieur de la racine du document?

/var/www/vhosts/project1/ 
/var/www/vhosts/project2/ 
/var/www/vhosts/libraries/zend-framework/zend-framework-1.11.0/... 
/var/www/vhosts/libraries/my-lib/my-lib-1.0.0/... 

Comme cela, des versions spécifiques à la fois du zend-cadre et mon-lib peuvent être utilisés dans mes projets.

Une configuration alternative serait ressembler à ceci:

/var/www/vhosts/project1/ 
/var/www/vhosts/project1/libraries/zend-framework/zend-framework-1.11.0/... 
/var/www/vhosts/project1/libraries/my-lib/my-lib-1.0.0/... 
/var/www/vhosts/project2/ 
/var/www/vhosts/project2/libraries/zend-framework/zend-framework-1.11.0/... 
/var/www/vhosts/project2/libraries/my-lib/my-lib-1.0.0/... 

La première version a plus de sens pour moi, mais je ne sais pas si je rencontre des problèmes de sécurité si mes projets dépendent des fichiers en dehors de leur dossiers racine de document. De plus, je rencontre des problèmes lorsque j'essaie d'inclure des fichiers javascript de my-lib dans mes projets si my-lib est en dehors de la racine du document de projets.

Quelle est la meilleure pratique ici, où devrais-je mettre ma bibliothèque et le framework zend?

+0

/var/lib? puisque c'est une bibliothèque? –

+2

Je ne pense pas que vous pouvez mettre des fichiers javascript en dehors de la racine du document, car alors ceux-ci ne seront pas accessibles depuis le navigateur. – naiquevin

+0

Je vote pour le premier. Mais quand vous parlez de project documentRoot, j'espère que vous ne parlez pas d'Apache DocumentRoot, ce serait un gros échec de sécurité. – regilero

Répondre

6

Si/var/www/vhosts/bibliothèques est accessible depuis l'extérieur, je vous recommande de mettre votre bibliothèque un niveau inférieur (/ var/www/bibliothèques) si:

  1. vous pouvez partager la même lib avec toutes vos applications PHP
  2. PHP peut accéder sans peaufinage les droits
  3. ce n'est pas directement accessible à partir des sites avant
+2

En ce qui concerne les fichiers publics dans ces bibliothèques (js, css, images, etc.), vous pouvez utiliser un alias Apache (mod_alias) pour mapper ces fichiers sur une URL accessible. – Jody

Questions connexes