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

pra*_*mod -4 python perl cgi mod-perl

在我的CGI脚本中:

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

print $?;
Run Code Online (Sandbox Code Playgroud)

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

该命令可以在命令提示符下完美地工作,并在当前工作目录中创建一个文件,但不能在使用我的CGI脚本运行时创建system.

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

Bor*_*din 5

139的值- 0x8B-用于$?意味着它是因为分段违例而失败- SIGSEGV -并且有一个核心转储.

我最好的猜测是,当你的C程序从CGI帐户运行时,它没有打开输入文件的必要权限,而且它不能正确处理打开的故障,所以它继续使用无效的文件句柄.

pdb1wdk.ent用类似的东西更改权限

chmod 744 pdb1wdk.ent
Run Code Online (Sandbox Code Playgroud)

并查看症状是否改变.

如果这样做,请不要忘记返回并进行更改,hbplus以便正确处理文件打开异常