我正在玩 yii,但我不确定将框架文件放在哪里。在我的共享主机上,我有 /home/username 文件夹,其中当然包含 public_html。Yii 应用程序文件应该进入 public_html,但是框架呢?它也应该放在 public_html 中还是应该放在 /home/username 中?那还能用吗?受保护的文件夹呢?我应该将它与 public_html 中的所有其他应用程序文件一起保留,还是应该将它也移到其他地方?
解决这个问题的常用方法是什么?
我正在玩 yii,但我不确定将框架文件放在哪里。在我的共享主机上,我有 /home/username 文件夹,其中当然包含 public_html。Yii 应用程序文件应该进入 public_html,但是框架呢?它也应该放在 public_html 中还是应该放在 /home/username 中?那还能用吗?受保护的文件夹呢?我应该将它与 public_html 中的所有其他应用程序文件一起保留,还是应该将它也移到其他地方?
解决这个问题的常用方法是什么?
大多数网络服务器最酷的一点是,让您的实际代码比公共代码高一级不是问题。我使用的通常是这样的:
pubic_html/ <- your /home/user/public_html
mysite.com/
public/ <- The web site root (for apache config)
protected/ <- Your actual code
dependencies/ <- Framework and other libraries you use
db/ <- All database delta scripts
如果您的多个站点使用相同的库,您也可以选择将它们放在一个公共位置并向其添加符号链接,这样您就不会用多个副本耗尽您的服务器配额。我认为如果您使用的是 Apache,您必须为此启用 FollowSymlinks 选项。
IMO 限制对 public/ 文件夹公开可用的内容是一件好事。考虑到您的实际代码文件夹无法从外部世界访问,它增加了一点额外的保护。
编辑:正如我在上面的评论中提到的:如果您的主机只允许一个站点并且它预先链接到 public_html 您可以考虑使用另一种结构来拆分所有内容:
protected_html/
code/ <- Your actual code
dependencies/ <- Framework and other libraries you use
db/ <- All database delta scripts
pubic_html/ <- your /home/user/public_html and website root.
Yii 非常通用,允许对此进行配置,配置文件被假定在 protected/config 文件夹下,任何更高级别的都被认为是模型/控制器的位置等等。在 Rolands 回答从其他位置包含 Yii 和修改包含您的配置文件之间应该没问题。
我通常将它们放在 /home/username 中,这样可以确保没有人可以直接访问框架。然后一旦放置在那里,编辑 public_html 中的 index.php 文件以指向框架目录
$yii=dirname(__FILE__).'/../../yii-1.1.12.b600af/framework/yii.php';
您也可以将框架放在 public_html 文件夹中,然后只需在框架文件夹中添加一个 .htaccess 文件,其中包含以下deny from all
假设在 apache 中启用了覆盖所有,这也将确保没有人可以从浏览器访问该目录。
因此,只要有可能,您不需要直接从浏览器访问的文件和文件夹总是将它们放在 public_html 文件夹之外,以提高安全性,假设禁用 apache 中的全部覆盖