Fat*_*r0r 15 php unix linux apache centos
在你大喊大叫之前!把我赶进深渊,听我说.:)
我一直在为我合作的公司开发一个Intranet站点,最初我是从运行Windows 7/IIS的工作站直接开发它.当我接近完成站点/应用程序时,我得到了一个运行Apache的Centos 7盒子,所以我开始将它迁移到该系统.我已经整理了大部分小问题,现在让网站运行了.但是,该站点的一部分与我们的数据库交互,并根据登录的人创建一个日志目录/文件.这部分使用mkdir()函数,但我收到了权限问题.
mkdir(): Permission denied
Run Code Online (Sandbox Code Playgroud)
这是我已经做过的事情:
因此,无论我使用chmod还是chown来更改正在访问的文件夹的权限,我都会遇到相同类型的错误.为了安全起见,我也检查了PHP用户,并且它也使用了apache用户.
如果有人可能有额外的洞察力,为什么它不工作,即使权限已更改,那么请赐教.如果我碰巧错过了一篇解释这种特殊情况的文章,那么大喊大叫并将我驱逐到深渊.大声笑 :)
编辑 好的,经过进一步的测试,我发现了两个似乎导致这个整体问题的问题.
请注意,我试图在PHP中的mkdir上将递归值设置为true,但是当我得到最初提到的权限问题时.删除递归/模式时,它不会获得权限问题,但无法创建嵌套目录.
EDIT2
为了测试我的理论,我删除了嵌套并尝试使mkdir只创建一个目录,并且它产生与以前相同的错误.虽然它由Apache拥有,即使我将其设置为777,它也会抛出权限问题.
dra*_*ack 39
可能是因为你有755/777权限,SELinux阻止httpd编写/创建dirs.
尝试:
chcon -R -t httpd_sys_content_t /path/to/www
chcon -R -t httpd_sys_content_rw_t /path/to/www/dir/for/rw
Run Code Online (Sandbox Code Playgroud)
更多信息:http://wiki.centos.org/TipsAndTricks/SelinuxBooleans