Node exec 没有执行脚本的权限

ifc*_*fig 5 javascript linux node.js raspberry-pi3

直到最近,它运行良好,但是当我今天尝试使用它时,它无法正常工作。它返回以下错误:

错误:命令失败:/bin/sh -c /home/pi/RPi-Computer-Power/RPi-Server/routes/../scripts/hash.js 12345678 /bin/sh: 1: /home/pi/RPi -Computer-Power/RPi-Server/routes/../scripts/hash.js:权限被拒绝

我非常困惑,因为当我尝试从命令行运行脚本时,它运行良好;/home/pi/RPi-Computer-Power/RPi-Server/routes/../scripts/hash.js 12345完美执行。

这是我尝试执行脚本的代码。(索引.js)

exec(__dirname+"/../scripts/"+req.params.script+" "+req.body.params, function(err, stdout, stderr) {
        console.log("err: ",err,"stdout: ",stdout,"stderr: ",stderr);
        if(err){
          res.send("<a href='/'>< Back</a> <b>Program Error:</b> "+err.toString());
          return;
        }
        //res.send("<a href='/'>< Back</a> <b>Program Output:</b> <div style='white-space:pre-line>'"+stdout+stderr+"</div>");
        res.render("programOutput", {output: stdout});
      });
Run Code Online (Sandbox Code Playgroud)

如果有人有任何帮助,请提前致谢。尼尔

Jam*_*aid 6

想到两件事:

1)确保您尝试执行的脚本是可执行的,例如: chmod +x /folder/script

2) 许多Linux发行版的默认终端 shell是bash. 您显示的错误包括 using /bin/sh -c,它在许多Linux发行版中dash默认shell为(是的,终端和在没有终端的情况下运行脚本的默认值不同)。因此,由于它似乎适用于bash,请尝试使用 来唤起脚本bash -c /folder/script