PHP项目的/ var / www /文件夹结构

时间:2009-04-10 17:42:33

标签: php mamp

我正在使用MAMP仅用于我的开发环境,并且还没有真正理解Web服务器上/ var / www / project-name /的文件夹结构。我想知道你是否打算将Web服务器指向htdocs文件夹,或者它应该指向项目文件夹的根目录?

我问的原因是因为出于安全目的,库本来就存在于htdocs文件夹之外,但它们是如何从Web应用程序本身指向的?当Web服务器指向Web应用程序的htdocs文件夹时,Web应用程序肯定无法访问htdocs文件夹之外的文件夹吗?

5 个答案:

答案 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个虚拟主机,但保持相同的文件结构。

此外,根据服务器文件结构,使用配置文件中的条件来设置站点,以确保相同的配置文件在两个设置上都能正常工作。这意味着您将保持一步构建过程。