为什么PHP需要“执行”权限才能写入文件?

为什么PHP需要“执行”权限才能写入文件?

问题描述:

我无法打开一个文件进行写入,除非我为它所创建的目录启用“执行”权限,这似乎很奇怪。为什么“写入”权限不够?为什么PHP需要“执行”权限才能写入文件?

这是一个非常简单的fopen,fputcsv循环,fclose序列。该目录中的文件没有其他任何内容正在完成。

基本配置 - Centos的,阿帕奇,PHP

感谢

+4

这可能与SELinux(http://en.wikipedia.org/wiki/Security-Enhanced_Linux)有关,因为您使用的是CentOS。 – summea 2012-02-04 18:23:47

这可能与SELinux做。基本上,SELinux可以让您更好地控制进程和守护进程可以执行的操作......一种超出普通用户/组权限的边界系统。它对细粒度控制可能有帮助,但有时候会妨碍它。

有办法关闭它(请参阅http://linuxconfig.org/how-to-disable-selinux)。

但是,还有一些方法可以微调设置(请参阅:http://sheltren.com/stop-disabling-selinux),从长远来看这可能会更好。如果你不与CentOS绑定,你也可以尝试一个不同的发行版。

编辑:

此外,如果这没有做SELinux的,如在下面的评论中提到sepp2k,你可能想看看标题为“执行权限”在Wayne Pollock的this file and directory reference guide上。

+2

这与SELinux无关。您不能在没有执行权限的目录中创建,修改或读取文件。这是正常的行为。 – sepp2k 2012-02-04 20:15:04

+0

这类问题最近在这里被问到......(http://*.com/questions/8998743/rhel-php-writing-files-outside-var-www-html/8998776)和( http://*.com/questions/9056628/php-cant-write-outside-of-the-document-root-no-matter-what/9059696)也许我错了。不要伤害自己发布自己的答案。 – summea 2012-02-04 20:44:55

+0

但是,您确实提出了有关'执行'权限的好处:http://content.hccfl.edu/pollock/AUnix1/FilePermissions.htm(执行权限部分)编辑我的答案以反映这种可能性。 – summea 2012-02-04 21:17:52

“在目录上,执行权限(也称为”搜索位“)允许您访问目录中的文件并使用cd命令输入它,例如。” source - 关于文件权限的良好讨论