Yii2 入口文件与上传

经过这几年的Yii2开发经验,总结出来关于Yii2入口文件的一些常用方法:

第一种,Yii2官网默认:

  1. 前台入口文件:frontend/web/index.php;
  2. 后台入口文件:backend/web/index.php;

这种方法的缺点就是需要绑定两个域名,并且这种在wdcp服务器上很难实现。

第二种,将两个入口文件都转移到根目录下,这是最开始我最喜欢用的,参考 Yii2高级应用模板将入口文件移到根目录

  1. 前台入口文件:index.php;
  2. 后台入口文件:admin.php;

但这种方法明显违背了Yii2关于域名无法访问其它目录的初衷(不知道是不是这样说的,就是这个意思了)。

第三种,将入口文件转移到某个目录下:

  1. 前台入口文件:web/index.php;
  2. 后台入口文件:web/admin/index.php;

这种方法即兼顾了域名不能访问其它目录,又不需要绑定两个域名,可以说是最佳的方案了(个人认为)。


以上三种方法,对于上传(使用自己写的上传类),会有一些差别,

第一种,后台上传的文件,前台无法访问,除非做一个域名转换,只要遇到上传的文件,就把文件的域名改成后台域名。

第二种,直接上传到根目录,前后台都能轻松访问。

第三种,后台会上传到web/admin/uploads目录下,而前台会上传到web/uploads目录下,很明显这样是不行的。


故而,我打算重新写上传类,设定两个参数,$rootPath$rootUrl

保存文件的时候,使用$rootPath+文件url保存;

而将文件url保存到数据库时,使用$rootUrl+文件url保存;

这样,可以兼顾后以上三种入口文件类型。


至于另外一种使用快捷方式的方法,据说linux可以用,但windows不行。