【发布时间】:2017-10-04 21:19:51
【问题描述】:
我有一个 perl 脚本可以将文件从一个文件夹移动到另一个文件夹。当我手动运行它时,它工作正常。但是当我从浏览器执行它时,我无法做到。收到错误消息。
我知道这与CGI环境访问权限有关。但是如何将该权限添加到我的 perl 脚本中。我已经对该文件和文件夹授予了 777 权限,但仍然不能。请指教。
提前致谢。
这是我的代码。
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use File::Copy;
print "Content-type: application/json\n\n";
my $query = new CGI;
my $name = $query->param('name');
#$name = "WVID21WAAA110200";
my $sdir = "/disk1/advisories/input/unread";
my $tdir = "/disk1/advisories/input/read";
my $file = $sdir."/".$name;
my $tfile = $tdir."/".$name;
my $f = 0;
print "[";
if (-e $file && -f $file)
{
move($file,$tfile) or $f=1;
if(($f==1)){
print "{\"status\":\"failed\",\"message\":\"Access Denied\"}";
}else{
print "{\"status\":\"success\",\"message\":\"File moved\"}";
}
}else{
print "{\"status\":\"failed\",\"message\":\"Invalid file\"}";
}
print"]";
exit 0;
【问题讨论】:
-
查看您的 http 服务器错误日志文件。从
move命令到stderr的任何输出? (只要你记录下来……) -
谢谢@arkascha,这是因为目标路径文件夹没有执行权限。我添加了它现在工作正常。非常感谢。
-
我在第一条评论中提到了目标文件夹权限 :-) 但是再一次:您确实应该注意将权限集限制为实际需要的权限。不要让文件在世界范围内都可写,尤其是在 Web 环境中。但是很高兴你解决了你的问题!
-
如果您有解决方案,您应该将其发布为答案。在这种情况下,不仅允许,而且鼓励自我回答。
-
“收到错误消息。”在这种情况下,在您的问题中包含该错误消息会非常有帮助。