【问题标题】:Unable to move file via perl CGI无法通过 perl CGI 移动文件
【发布时间】: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 环境中。但是很高兴你解决了你的问题!
  • 如果您有解决方案,您应该将其发布为答案。在这种情况下,不仅允许,而且鼓励自我回答。
  • “收到错误消息。”在这种情况下,在您的问题中包含该错误消息会非常有帮助。

标签: apache perl unix


【解决方案1】:

这是因为目标路径文件夹没有执行权限。我添加了它现在工作正常。 ——拉杰什

【讨论】:

    猜你喜欢
    • 2012-05-31
    • 2013-02-24
    • 2013-09-04
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 2014-01-25
    • 2016-01-01
    • 2012-01-16
    相关资源
    最近更新 更多