我正在使用MAMP仅用于我的开发环境,并且还没有真正理解Web服务器上/ var / www / project-name /的文件夹结构。我想知道你是否打算将Web服务器指向htdocs文件夹,或者它应该指向项目文件夹的根目录?
我问的原因是因为出于安全目的,库本来就存在于htdocs文件夹之外,但它们是如何从Web应用程序本身指向的?当Web服务器指向Web应用程序的htdocs文件夹时,Web应用程序肯定无法访问htdocs文件夹之外的文件夹吗?
答案 0 :(得分:9)
一个简单的解决方案是拥有如下文件夹结构:
/var/www/project-name/
+ webroot/
+ libraries/
将apache2 DocumentRoot
指向webroot
目录。保留您不希望从libraries
目录中的Web访问的所有库。在您的PHP代码中,使用include指令访问库代码。
诀窍是要了解php可以包含您具有读取权限的系统上的任何文件。浏览您网站的人只能访问您的webroot目录中的文件。
答案 1 :(得分:3)
如果在同一台服务器上有多个vhost,那么将每个站点放在/var/www
下的目录中是很常见的,并且每个站点都有一个htdocs
文件夹,该文件夹作为Web根目录安装。然后,您可以在Web根目录上方的文件夹中包含日志和特定于应用程序的库。例如:
/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
答案 2 :(得分:1)
PHP可以访问apache服务器用户具有正确权限的文件系统中的任何文件。在没有虚拟主机的运行apache的linux机器上,/ var / www是用于htdocs目录的常用位置。
答案 3 :(得分:0)
您将库放在PHP的include_path
中,这是普通用户无法访问的。
答案 4 :(得分:0)
以与域名相同的方式在目录中映射本地网站是一种愚蠢的想法。
通常,您在一个网络托管帐户中拥有多个网站,因此请设置虚拟主机以镜像设置。
如果您的共享托管是:
/var/www/root
/var/www/root/website1
/var/www/root/website2
/var/www/root/website3
在本地PC上创建3个虚拟主机,但保持相同的文件结构。
此外,根据服务器文件结构,使用配置文件中的条件来设置站点,以确保相同的配置文件在两个设置上都能正常工作。这意味着您将保持一步构建过程。