1

我正在考虑下载和学习 Symfony 2。我以前没有真正看过 PHP 框架。

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

为什么 Symfony 2 被下载到公共网络根目录?

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

显然我错了,但会很感激这个原因。

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

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

我必须错过一些非常清楚和明显的东西。

4

3 回答 3

8

虽然许多框架确实将所有代码都放在了 Web 根目录中,但 Symfony 却没有。

Instead, the standard distribution has a /web folder, which you should make your webroot.

If you are on a server where you cannot configure the webroot to be within your Symfony project folder, you can instead use a symbolic link between the webroot folder and the Symfony web folder. This is common practice for things such as shared hosting plans.

于 2013-03-07T23:45:24.980 回答
1

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

RewriteRule ^$ web/app.php

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

正如其他人指出的那样,在生产环境中,出于更严格的安全考虑,您应该将您的 webroot 指向 /web 目录。我上面的回答只是想指出为什么它以开箱即用的方式工作。

于 2013-03-07T23:30:38.453 回答
0

当您将框架数据放在服务器上时,它希望公开。只有文件夹public通过虚拟主机指向 VPS 服务器并视为公共文件夹。Symfony 公用文件夹是web这样你应该指向虚拟主机来加载 index.php

看更多关于:在 Symfony 1.4 中重命名“web”文件夹

示例如何在 symfony2 上设置文档根目录:symfony2 安装说明请帮助

版本 2 与 1.4 类似,因为您只需要指向路径。

于 2013-03-07T23:27:54.093 回答