我有这个问题,我陷入僵局,我会尝试任何我已经达到了死亡。 我的问题是这样的:
我在运行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可能没有父目录之一的权限。 它至少需要在包含文件的目录(包括目录)的所有目录中执行权限。
编辑:对,考虑到这是一个编程网站,一些代码可能是为了。
使用文件的绝对路径进行测试,而不是相对路径,以确保您在正确的目录中。
$! 应该打印出“权限被拒绝”的错误,如果它是权限,你能打印出来的问题:
打开(FILE,“> /path/to/file/config.ini”)|| 死“不能打开:$!”; …关闭(FILE);
也许一些其他进程有文件锁写入? 试试看看是谁把它打开。
该目录是否允许Web服务器在那里写文件?
我知道以前的文章涉及到这一点,但我认为这是重复的:在讨论这种性质的问题时,包含相关代码和异常输出是有帮助的。 如果I / O操作失败,$! 应该包含系统错误消息,这将解释为什么操作失败。 说“没有用”并没有给我们任何东西继续下去。