本站使用了 Pjax 等基于 JavaScript 的开发技术,但您的浏览器已禁用 JavaScript,请开启 JavaScript 以保证网站正常显示!

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

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


 继续浏览关于 ThinkPHPPHP-FPM 的文章

 本文最后更新于 2019/02/24 02:30:29,可能因经年累月而与现状有所差异

 引用转载请注明:芝麻实验室 > 排障 > ThinkPHP目录不可写的解决方案

发现共鸣

如是说:数学期望小到渺茫又如何呢,哪怕结果不如人愿,也要在尘埃落定前奋起一搏。