服务器环境:centos7 apache php7 thinkPHP5
在PHP代码中用到了Log类,在服务器上将日志写入文件。执行代码的时候遇到以下报错:
……failed to open stream: Permission denied
很明显是服务器目录没有文件的写入权限。我的日志目录是/web/logs,第一反应就是给这个目录加上足够的权限。
chown -R 777 /web/logs
加上权限后还是上面的报错信息。然后搜了好多文章方法试了个遍也没解决。
突然想到,/web/logs这个文件夹是属于哪个用户组哪个用户的?
ls -l /web/logs
显示该文件夹仅仅属于root用户。
那么apache提供的web服务又是使用的哪个用户组和用户?打开apache的配置文件httpd.conf,在其中找到 group user相关的配置信息。发现apache的用户组和用户名就是apache.
httpd.conf
给/web/logs加上apache用户的操作权:
chown -R apache /web/logs
然后查看一下
ls -l /web/logs
现在root和apache用户对它都有操作权了。
回到PHP页面刷新,文件写入操作正常了,问题解决。
网友评论