PHP库内部或外部的文档根目录?

aim*_*eld 4 php zend-framework

我正在编写一个基于zend框架的PHP库.我的几个Web项目使用了我的库.我不知道我应该把我的图书馆放在哪里.将它放在单个项目的文档根目录之外似乎是有意义的,因此我不必在每个单独的项目中维护库.我目前的设置如下:

/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/...
Run Code Online (Sandbox Code Playgroud)

像这样,zend-framework和my-lib的特定版本都可以在我的项目中使用.

另一种设置如下所示:

/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/...
Run Code Online (Sandbox Code Playgroud)

第一个版本对我来说更有意义,但如果我的项目依赖于文档根文件夹之外的文件,我不确定是否会遇到一些安全问题.此外,如果my-lib在项目文档根目录之外,当我尝试在my-lib中包含javascript文件时遇到问题.

这里有什么最佳实践,我应该在哪里放置我的库和zend框架?

Nab*_*bab 6

如果可以从外部访问/ var/www/vhosts/libraries,我建议你将库降低一级(/ var/www/libraries),这样:

  1. 您可以与所有PHP应用程序共享相同的lib
  2. PHP可以在不调整权限的情况下访问它
  3. 它不能直接从前端站点访问

  • 关于这些库中的任何面向公众的文件(js,css,images等),您可以使用Apache别名(mod_alias)将这些文件映射到可访问的URL. (2认同)