log/upload.log 2>&1 &-6ren">
gpt4 book ai didi

linux - cgi-bin 中的 Perl 脚本不执行带参数的 shell 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:06 24 4
gpt4 key购买 nike

我的 Perl 脚本存在于 cgi-bin/rel 位置中。这段代码有问题:

system("./upd_test.sh $res_file $label >log/upload.log 2>&1 &"); ->does not work
system("./upd_test.sh"); ->works fine

我很不明白为什么会发生这种情况。使用Apache服务器。

perl 脚本的文件权限是

-rwxr-xr-x 1 root   apache 1935 Oct  8 12:37 upload_label.pl

shell 脚本的文件权限是

-rwxrwxr-x 1 root   apache  945 Oct  8 14:27 upd_test.sh

如果我可以不带参数调用 shell 脚本,为什么当我带参数调用它时会出现问题?该脚本根本没有被调用。我在 shell 脚本中添加了一个打印,该脚本写入 /tmp 位置以验证它是否被执行。

我刚刚发现如果删除重定向它就可以正常工作,因此 system("./upd_test.sh $res_file $label") 可以正常工作,但我想重定向日志,因为它对我的工作非常重要。

最佳答案

当前工作目录不是 CGI 脚本所在的目录,因此使用 ./将不起作用。

尝试使用 FindBin ( https://metacpan.org/pod/FindBin ) 获取目录或仅将完整路径硬编码到 upd_test.sh 脚本。

但是...从 CGI 脚本(实际上是从网页)运行 system() 是危险的。

关于linux - cgi-bin 中的 Perl 脚本不执行带参数的 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26266912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com