在你翻唱DUPLICATE之前! 把我驱逐到深渊,听我说。 🙂
我一直在为与之合作的公司开发一个Intranet站点,最初我是从运行Windows 7 / IIS的工作站直接开发的。 当我接近完成网站/应用程序时,我得到了一个运行Apache的Centos 7框,所以我已经开始将它迁移到该系统。 我已经整理了大部分的小问题,并且现在运行了这个站点。 但是,有一部分网站与我们的数据库交互,并根据login的用户创build了一个日志目录/文件。这部分使用了mkdir()函数,但是我得到了许可问题。
mkdir(): Permission denied
这是我已经做了:
因此,无论我使用chmod还是chown来更改正在访问的文件夹的权限,我都遇到了相同types的错误。 为了安全起见,我也检查了PHP用户,并且也使用了apache用户。
如果有人可能有更多的见解,为什么它不工作,即使权限改变,那么请赐教。 如果我碰巧错过了解释这种特殊情况的一篇文章,那么大声复制,把我驱逐到深渊。 大声笑 :)
编辑好的,所以在进一步的testing中,我发现了两个似乎是造成这个总体问题的问题。
需要注意的是,我试图在PHP中将mkdir的recursion值设置为true,但是当我得到最初logging的权限问题时。 当recursion/模式被删除,它不会得到权限问题,但它不能够创build嵌套的目录。
EDIT2
为了testing我的理论,我删除了嵌套,并试图让mkdir创build一个目录,并生成与以前相同的错误。 虽然它属于Apache,即使我将它设置为777,也会抛出许可问题。
可能是,虽然你有755/777权限,SELinux阻止httpd写入/创建目录。
尝试:
chcon -R -t httpd_sys_content_t /path/to/www chcon -R -t httpd_sys_content_rw_t /path/to/www/dir/for/rw
更多信息: http : //wiki.centos.org/TipsAndTricks/SelinuxBooleans
不知道,但你的Centos的PHP二进制文件可能有损坏的文件权限。 有两种方法可以解决这个问题。
根据DRU的回应
这个问题是由于SELINUX。 使用波纹管命令
chcon -R -t httpd_sys_content_rw_t / path / to / www / dir / for / rw