2014-04-10 29 views
0

我使用Ubuntu 12.04和Apache2。我的Perl脚本是/usr/lib/cgi-bin,我试图写一个文件(打开“>”),以/var/www/my_custom_dir,但我得到:Perl不允许写入文件

权限被拒绝

如果我尝试写剧本的目录或其他任何错误是相同的。权限似乎是正确的。一切都是755,根源所有者。我试图将“my_custom_dir”所有者更改为www-data(apache用户),但没有任何区别。

open (UPLOADFILE, ">$filepath") or die "$!"; binmode UPLOADFILE; 
while (<$file>) { print UPLOADFILE $_; } close($file); close UPLOADFILE; } 

它“死”在第一行。日志上的错误是“Permission denied at /usr/lib/cgi-bin/script.cgi”

回答

2

即使您在root中启动cgi-bin,它也不起作用?

也许路径上的某个目录没有适用正确的权限。目录必须是+ x才能打开。

尝试检查所有cgi必须经过的目录,或在www-data中用“my_custom_dir”作为apache用户午餐cgi。

0

首先,将root设置为cgi-bin的所有者不是一个好主意。如你所见,5 = 4 + 0 + 1,所以它不给非所有者写入权限,只读取和执行。

你改变店主的方式是什么?尝试做recursevly(搭配chmod -R)

而且经常检查,如果$ filepath是正确的:

open (UPLOADFILE, ">$filepath") or die "Cannot open $filepath: $!"; 
+0

几个小时的应力认为它有一些东西需要与服务器的权限,它发生问题是后在perl中,出于某种原因,我没有idead:open(UPLOADFILE,“> $ filepath”)不起作用,但是:打开UPLOADFILE,“>”,“$ filepath”;确实有效。 – user3518089