直接用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 命令却能成功创建目录。
百试无解,请大神指点迷津!

阅读 7.4k
4 个回答

试试把runtime 目录改成权限drwxrwxr-x apache apache

可能是SeLinux的安全策略阻止了httpd修改系统文件吧

用chown命令把用户组改成www就没事了
chown -R www:www /home/wwwroot/default

应该将php-fpm配置文件中的用户组配置成dev,这里貌似涉及到有效用户组的问题,一般用ps查看php-fpm进程时会发现有主进程和子进程,php的处理都在子进程中,而子进程在创建时会根据配置来设定有效用户名和用户组,所以虽然是apache属于两个组,但其有效用户组是配置中的apache,而不是dev,所以是other,没有创建权限。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题