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

我有这个问题,我陷入僵局,我会尝试任何我已经达到了死亡。 我的问题是这样的:

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

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

我在这里非常绝望,我不知道从哪里开始的问题,所以任何帮助让我在正确的方式将不胜感激。

编辑:我可以从命令行打开文件进行编辑; 这是apache谁不能访问它

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

编辑: 问题是在selinux。 我禁用它,脚本有权访问该文件感谢大家的贡献

提前致谢

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

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

编辑:对,考虑到这是一个编程网站,一些代码可能是为了。

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

  2. $! 应该打印出“权限被拒绝”的错误,如果它是权限,你能打印出来的问题:

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

也许一些其他进程有文件锁写入? 试试看看是谁把它打开。

该目录是否允许Web服务器在那里写文件?

我知道以前的文章涉及到这一点,但我认为这是重复的:在讨论这种性质的问题时,包含相关代码和异常输出是有帮助的。 如果I / O操作失败,$! 应该包含系统错误消息,这将解释为什么操作失败。 说“没有用”并没有给我们任何东西继续下去。