我正在寻找下载和学习Symfony 2.我之前没有真正关注过PHP框架。
我知道这里不允许讨论,但我很确定我的问题不是主观的,我的问题有明显的答案。
为什么Symfony 2下载到公共网络根目录?
当然它应该是非公开的,只有HTML / CSS等应该是公开的吗?
显然我错了,但是会理解这个原因。
这是否意味着某人可以转到http://mysite.com/symfony/classes/database.php等(不是特定的网址,只是为了突出我的观点)并运行各种脚本?显然这可能只是一个类文件,但它仍然不适合我。
另外,我想在同一个框架上运行5或6个不同的站点。如果它安装在Web根目录中,那么这并不意味着我需要为每个站点安装整个Symfony代码库(在每个站点的Web根目录中) - 就好像它是在Web根目录之外托管的那样,每个站点都可以引用它(例如'../../symfony/classes/database.php'等)(只要所有网站都在同一台服务器上)。
我必须错过一些非常明确和明显的东西。
答案 0 :(得分:8)
虽然许多框架确实将所有代码放在Web根目录中,但Symfony却没有。
相反,标准发行版有一个/ web文件夹,你应该创建你的webroot。
如果您所在的服务器上无法将Webroot配置为Symfony项目文件夹,则可以在webroot文件夹和Symfony Web文件夹之间使用symbolic link。这是共享主机方案等常见做法。
答案 1 :(得分:1)
我对Symfony没有太多经验,但我相信它在根目录中有一个.htaccess
文件,可能有这样一行:
RewriteRule ^$ web/app.php
意味着对根目录的所有请求都会重定向到/web/app.php文件。唉,除了那个文件,没有人可以去任何地方。
正如其他人所指出的,在生产环境中,您应该将您的webroot指向/ web目录,以获得更严格的安全性考虑。我上面的回答只是试图指出它为什么会以它开箱即用的方式运作。
答案 2 :(得分:0)
当您将框架数据放在服务器上时,它需要公开。仅通过虚拟主机在VPS服务器上指向文件夹public
,并将其视为公共文件夹。 Symfony公用文件夹是web
所以你应该指向虚拟主机加载index.php
请查看以下内容:Rename "web" folder in Symfony 1.4
如何在symfony2上设置文档根目录:symfony2 installation instruction help please
版本2与1.4类似,因为您只需要指向路径。