我正在使用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中的权限被拒绝”
答案 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: $!";