我有一个Perl CGI脚本,它使用system
运行另一个Perl程序。
我在调用-x
之前添加了system
测试,当从shell运行时,它评估为 true 但是当执行时, false CGI服务器。该文件是一个符号链接。
当我使用绝对文件路径时,它也会在Web上评估为 true ,但在执行条件代码时,我收到No such file or directory
错误。
#!/usr/bin/perl
use strict;
use utf8;
use warnings;
use CGI::Carp 'fatalsToBrowser';
our ($CMD) = '/relative/path/file';
if ( -x $CMD ) {
my $output;
$output = system($CMD);
print $output;
}
ls -l /relative/path/file
的结果是:
-rwxr-xr-x 1 root something 19398 Sep 23 00:00 /relative/path/file
总结
代码在shell上执行时有效,但不在Web上执行
如果我使用相对路径-x
,则测试评估为假
如果我使用完整路径,则-x
评估为true,但system()
调用会引发No such file or directory
错误。
答案 0 :(得分:0)
在尝试运行脚本时,你是不是在调用Perl?
$output = system("perl $CMD");
答案 1 :(得分:0)
只是一种可能性......是否找不到/ relative / path /文件中运行的某些代码的文件?可能它会在代码中访问一些相对路径?