最近公司产品官网刚交付,需要部署上线,该站点基于Thinkphp框架,但在部署完毕测试时,站点提示目录不可写。经过一番自查及搜索引擎一番查找,仍旧没有找到合理的解决方案。 当然,肯定有人会说,某度出来明明有很多的方案,比如授权777之类的,但是如果细细一想,抛开是生产环境不说,随意授权777难道合理?
作为Thinkphp框架开发的站点,其框架官方说明已提到,应用目录[./Application/YOURWWWDIR]需授权及对应的站点根目录(即入口文件index.php)需授予读写权限,因此我们要做的实际就是解决这2个要求即可。因此,执行如下操作:
代码语言:javascript复制$ chown -R nginx:nginx ./Application/YOURWWWDIR
$ chown -R nginx:nginx WWWROOT
然而,依旧提示目录 [ ../Application/Runtime/ ] 不可写!
仔细一想,用户通过浏览器访问站点,是通过Web服务器用户(如果没有设置一般会默认为nobody),同时,Thinkphp需要通过php来读写文件,因此还需要授予php程序有权访问上述目录。
这一点,可以通过ACL
来实现,也可以通过用户组
来实现,为方便管理,这里推荐使用用户组方式
$ vim /usr/local/php/etc/php-fpm.d/www.conf
$ 23 user = nginx #默认为nobody
$ 24 group = nginx #默认为nobody
$ service php-fpm restart
再次打开浏览器,访问一切正常。ヽ( ̄▽ ̄)ノ