Perl字符串在命令提示符下工作,但不在CGI脚本中的system()中工作

时间:2012-07-26 06:36:51

标签: python perl cgi mod-perl

在我的CGI脚本中:

system("/home/httpd/cgi-bin/hbplus/hbplus /home/httpd/html/pdb1wdk.ent");

print $?;

系统命令将文件(例如pdb1wdk.ent)传递给hbplus。这是一个用C编写的exe文件,它处理输入文件以生成输出文件。

该命令在命令提示符下运行良好,并在当前工作目录中创建一个文件,但不是在使用system从我的CGI脚本运行时。

我也尝试从Python脚本和shell脚本运行hbplus并从Perl CGI调用这些,但这会产生分段错误。

1 个答案:

答案 0 :(得分:5)

值为139 - 0x8B - $?表示由于分段违规而失败 - SIGSEGV - 并且存在核心转储。

我最好的猜测是,当您的C程序从CGI帐户运行时,它没有打开输入文件所需的权限,此外它无法正确处理打开的故障,因此它继续使用文件句柄无效。

使用类似

的内容更改pdb1wdk.ent上的权限
chmod 744 pdb1wdk.ent

并查看症状是否发生变化。

如果有效,请不要忘记返回并更改hbplus,以便正确处理文件打开异常