我遇到了这个问题而且我遇到了僵局,我会尝试任何我已经达到了这个问题。我的问题是这样的:
我在运行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
提前致谢
答案 0 :(得分:12)
apache是否运行了一些selinux配置文件或类似的,以防止它写入该目录?
答案 1 :(得分:3)
用户apache可能没有其中一个父目录的权限。它需要在所有目录中至少具有执行权限,包括包含文件的目录。
编辑:是的,考虑到这是一个编程站点,一些代码可能是有序的。
使用文件的绝对路径进行测试,而不是相对的路径,以确保您位于正确的目录中。
$!如果是权限,应打印出“权限被拒绝”错误,是否可以打印出问题:
打开(FILE,“> /path/to/file/config.ini”)||死“无法打开:$!”; ... 关闭(FILE);
答案 2 :(得分:2)
也许其他一些进程对文件有写锁定?尝试 lsof 查看谁将其打开。
答案 3 :(得分:2)
目录是否允许网络服务器在那里写文件的权限?
答案 4 :(得分:0)
我知道之前的帖子涉及到这一点,但我认为值得重复:在讨论这种性质的问题时,包含相关代码和异常输出会很有帮助。如果I / O操作失败,$!应包含系统错误消息,这将解释操作失败的原因。说“它不起作用”并不能给我们带来任何好处。