ThinkPHP目录不可写的解决方案

时间:2022-06-18
本文章向大家介绍ThinkPHP目录不可写的解决方案,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

最近公司产品官网刚交付,需要部署上线,该站点基于Thinkphp框架,但在部署完毕测试时,站点提示目录不可写。经过一番自查及搜索引擎一番查找,仍旧没有找到合理的解决方案。 当然,肯定有人会说,某度出来明明有很多的方案,比如授权777之类的,但是如果细细一想,抛开是生产环境不说,随意授权777难道合理?

作为Thinkphp框架开发的站点,其框架官方说明已提到,应用目录[./Application/YOURWWWDIR]需授权及对应的站点根目录(即入口文件index.php)需授予读写权限,因此我们要做的实际就是解决这2个要求即可。因此,执行如下操作:

$ 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

再次打开浏览器,访问一切正常。ヽ( ̄▽ ̄)ノ