LNMP环境下php项目目录权限配置

发布时间:2019-08-07 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了LNMP环境下php项目目录权限配置脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

说明

nginx仅能处理静态文件,当遇到php文件时须转发给php-FPM处理,因此项目中的php文件须同时具有给nginx和php-fpm执行的权限,必要时还要加上的权限。nginx和php-fpm的权限来于它们的执行用户的权限,这里使这两者设置为同一执行用户来统一权限是比较方便的做法。
示范环境:

  • CentOS7.4
  • Nginx1.12.2
  • php7.2
  • 项目根目录是sorgo/
  • 项目管理员的用户名是uu,umask值是0002

操作

设置nginx和php-fpm为同一执行用户

新建执行用户www自带用户组www,且不可登录.

useradd www -s /usr/sbin/noLOGin

将已有的项目管理人员账号(如:uu,当然你也可以再创建一个专用的)加入www

usermod -G www uu

修改nginx配置文件,变更执行用户为www,我的环境中该文件路径是:/etc/nginx/nginx.conf
@H_360_76@

LNMP环境下php项目目录权限配置


修改php-fpm配置文件,变更执行用户为www,我的环境中该文件路径是:/etc/php-fpm.d/www.conf

LNMP环境下php项目目录权限配置

修改完后重启nginx和php-fpm.

设置项目目录权限

下面以laravel项目目录为例,只给相关用户必要的权限,又不会像设置777那样权限过大而存在可能的安全问题。

chown -R uu:www sorgo/       #设置归属
chmod -Rf g+s sorgo/         #SGID,新生成文件或文件夹保持与父目录同一权限组
chmod -R 750 sorgo/          #设置具体权限
chmod -R 770 sorgo/storage/  #程序需要写入和创建新文件的加`写`权限

SGID属性对于像laravel框架这种有tinker让开发者在交互式命令行界面调试代码的特别有用。比如你使用tinker新建了一个日志文件,如果没有SGID那这个新日志文件的所有者和所有组会是uu:uu,这时www用户执行下的程序要写入东西到这个新日志的话就会因权限受阻而报错;而父目录有SGID属性的则会是uu:www,同时保证了两个相关的用户都能正常读写。

后言

曾经有过各种因权限问题而报错的,基本办法也都是设置777权限了事,直到后来一次在我一怒之下将整个项目文件都设了777权限但还报错,真见鬼了,简直要疯掉了。。。
于是才下决心正面解决这个问题,就在网络上找了各种解决方案,有靠谱的也有不靠谱的,以上方案是经我整理实践后确认可靠的方案,希望对你有用。
如果你还知道更好的方案,也请留言分享出来,谢谢~

脚本宝典总结

以上是脚本宝典为你收集整理的LNMP环境下php项目目录权限配置全部内容,希望文章能够帮你解决LNMP环境下php项目目录权限配置所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。