Perl不允许写文件

时间:2014-04-10 05:55:58

标签: apache perl ubuntu permissions

我正在使用Ubuntu 12.04和Apache2。我的perl脚本在/usr/lib/cgi-bin,我正在尝试将文件(打开“>”)写入/var/www/my_custom_dir,但我得到了:

  

许可被拒绝

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

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

它在第一行“死”。日志错误是“/usr/lib/cgi-bin/script.cgi中的权限被拒绝”

2 个答案:

答案 0 :(得分:2)

即使您在root中启动cgi-bin也无法正常工作?

您路径中的某个目录可能没有应用正确的权限。目录必须是+ x才能打开。

尝试检查cgi必须经历的所有目录,或者使用&#34; my_custom_dir&#34;作为apache用户午餐cgi。在www-data。

答案 1 :(得分:0)

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

你改变主人的方式是什么?尝试recursevly(chmod -R)

还要经常检查$ filepath是否正确:

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