直接用linux用户可以创建目录,但是用php的mkdir却说权限不足
php-fpm进程的用户和组都是 apache,apache用户属于两个组,分别是apache组和dev组,web项目代码的拥有者和组都是dev,项目代码目录是 /var/www/basic, 现在在 basic 下的子目录 runtime 目录的权限及拥有者是:
drwxrwxr-x dev dev
按理来说,php-fpm 进程应该能在 runtime 目录下新建目录才对的,但实际情况却是失败了,抛出的异常显示是 :
Failed to create directory "/var/www/basic/runtime/logs": mkdir(): Permission denied
而当我用 apache 用户登录 linux ,进入 runtime 目录里,使用 mkdir 命令却能成功创建目录。
百试无解,请大神指点迷津!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
应该将php-fpm配置文件中的用户组配置成dev,这里貌似涉及到有效用户组的问题,一般用ps查看php-fpm进程时会发现有主进程和子进程,php的处理都在子进程中,而子进程在创建时会根据配置来设定有效用户名和用户组,所以虽然是apache属于两个组,但其有效用户组是配置中的apache,而不是dev,所以是other,没有创建权限。
试试把runtime 目录改成权限drwxrwxr-x apache apache
可能是SeLinux的安全策略阻止了httpd修改系统文件吧
用chown命令把用户组改成www就没事了
chown -R www:www /home/wwwroot/default