2013-03-07 56 views
1

我在看下载和学习Symfony 2.我没有真正看过PHP框架。为什么将Symfony 2安装到web根目录?

我知道这里不允许讨论,但我很确定我的问题不是主观的,对我的问题有一个明显的答案。

为什么Symfony 2下载到公共Web根目录?

当然,它应该是非公开的,只有HTML/CSS等应该公开?

很明显我错了,但会明白这个原因。

这并不意味着有人可以去http://mysite.com/symfony/classes/database.php等(不是一个特定的网址,但只是为了突出我的观点)并运行各种脚本?显然,这可能只是一个类文件,但它仍然不适合我。

此外,我想在同一个框架上运行5或6个不同的站点。如果它安装在Web根目录中,那么这并不意味着我需要为每个站点(在每个站点的Web根目录中)安装整个Symfony代码库 - 如果它位于Web根目录之外,那么每个站点都可以引用该例如'../../symfony/classes/database.php'等)(只要所有站点在同一台服务器上)。

我一定要丢失一些非常清晰明显的东西。

+0

如果您在Symfony之前没有看过框架,为什么不试试Codeigniter或Zend框架? – 2013-03-07 23:25:45

+0

我不是专家,但我相信Zend非常复杂。尽管如此,我会很感激这个问题的建议。谢谢, – user2143356 2013-03-07 23:27:24

+0

Zend在版本1上非常复杂。你应该关注新版本2. Symfony比Zend 2复杂。 – 2013-03-07 23:30:10

回答

8

虽然很多框架都将他们所有的代码放在web根目录下,但Symfony却没有。

相反,标准分配有一个/ web文件夹,您应该使您的webroot。

如果您在服务器上无法将Webroot配置为位于Symfony项目文件夹中,则可以改为在webroot文件夹和Symfony Web文件夹之间使用symbolic link。这是共享托管计划等常见做法。

+0

谢谢,我想我现在已经明白了。 – user2143356 2013-03-08 00:02:23

+0

你能说出为什么web文件夹应该是虚拟主机的文档根目录吗? – mlwacosmos 2017-07-13 08:49:06

+0

@mlwacosmos最佳答案是安全原因 - 除非Apache配置错误,否则文档根目录之外的任何内容都无法直接访问。 – MrGlass 2017-07-13 16:06:37

0

当你把你的框架数据放在服务器上时,它就是公开的。只有文件夹public通过虚拟主机指向VPS服务器,并视为公共。 Symfony的公用文件夹web所以你应该这一点上虚拟主机加载的index.php

看这更多:Rename "web" folder in Symfony 1.4

示例如何设置Symfony2的一个文档根:symfony2 installation instruction help please

第2版与1.4相似,因为你只需要指向路径。

+0

这是Symfony2的情况吗? – halfer 2013-03-07 23:34:21

1

我没有与Symfony的很多经验,但我相信它有一个.htaccess文件的根目录下,它可能有这样一行:

RewriteRule ^$ web/app.php 

这意味着到根的所有请求目录被重定向到/web/app.php文件。唉,除了那个文件,没有人可以去任何地方。

正如其他人指出的,在生产环境中,您应该将您的webroot指向/ web目录以获取更严格的安全考虑。我上面的回答只是试图指出它为什么会像现成的那样起作用。

+0

为什么downvote?我明白我可能是错的,但至少要解释。 :) – Steve 2013-03-07 23:44:30

+0

向下投票请解释,因为这听起来正确的给我。谢谢。 – user2143356 2013-03-07 23:46:28

+0

感谢您的帮助。 – user2143356 2013-03-08 00:02:47