为什么我的apache进程不能写入我的世界可写文件?

时间:2009-02-05 10:05:13

标签: linux apache permissions cgi

我遇到了这个问题而且我遇到了僵局,我会尝试任何我已经达到了这个问题。我的问题是这样的:

我在运行apache2的Fedora 9机器上安装了一个Perl / CGI脚本,这个脚本有一个放置在同一目录下的配置文件,这个配置文件有777个权限。

脚本无法写入文件。它可以读取,但绝不能让它写入它。该文件由运行apache的同一用户拥有。我写了一个小的PHP脚本来测试并将它放在同一个文件夹中。 PHP脚本可以读取但无法写入。

我在这里非常绝望,我不知道从哪里开始解决问题,所以任何有助于让我走上正确道路的帮助都将不胜感激。

编辑:我可以从命令行打开文件进行编辑;它是无法访问它的apache

EDIT2:文件夹层次结构/ var / www / cgi-bin / script
       权限就像这样 / var root 755
www root 755
cgi-bin root 755
脚本apache 755

编辑:问题出在selinux上。我禁用了它,脚本可以访问该文件,感谢每个人贡献

提前致谢

5 个答案:

答案 0 :(得分:12)

apache是​​否运行了一些selinux配置文件或类似的,以防止它写入该目录?

答案 1 :(得分:3)

用户apache可能没有其中一个父目录的权限。它需要在所有目录中至少具有执行权限,包括包含文件的目录。

编辑:是的,考虑到这是一个编程站点,一些代码可能是有序的。

  1. 使用文件的绝对路径进行测试,而不是相对的路径,以确保您位于正确的目录中。

  2. $!如果是权限,应打印出“权限被拒绝”错误,是否可以打印出问题:

    打开(FILE,“> /path/to/file/config.ini”)||死“无法打开:$!”; ... 关闭(FILE);

答案 2 :(得分:2)

也许其他一些进程对文件有写锁定?尝试 lsof 查看谁将其打开。

答案 3 :(得分:2)

目录是否允许网络服务器在那里写文件的权限?

答案 4 :(得分:0)

我知道之前的帖子涉及到这一点,但我认为值得重复:在讨论这种性质的问题时,包含相关代码和异常输出会很有帮助。如果I / O操作失败,$!应包含系统错误消息,这将解释操作失败的原因。说“它不起作用”并不能给我们带来任何好处。