cgi perl脚本中的$ 0在/ var / www / html和〜/ public_html中表现不同

时间:2018-03-14 09:28:04

标签: apache perl

所以我有这个脚本try.pl:

#!/usr/bin/perl -T

use strict;
use warnings;

print "content-type: text/plain\n";
print "\n";

$ENV{PATH} = "/usr/bin:/usr/sbin";

my $date = `/bin/date`;

print "This is $0, now is $date \n";

在两个位置:/vaw/www/html/website/cgi-bin/try.pl和/home/user/public_html/website/cgi-bin/try.pl 根据我打开哪一个,我会得到不同的结果: /vaw/www/html/website/cgi-bin/try.pl给了我:

This is /var/www/html/website/cgi-bin/try.pl, now is Tue Mar 13 17:11:56 EET 2018

和/home/user/public_html/website/cgi-bin/try.pl给了我:

This is try.pl, now is Tue Mar 13 17:48:25 EET 2018

正如您所看到的,问题是$ 0只给了我public_html中的基本名称。我还要添加cgi-bin / .htaccess:

Options +ExecCGI -Indexes
AddHandler cgi-script .pl

<Files ~ "\.(conf|config)$">
    Order allow,deny
    Deny from all
</Files>

我做的另一个测试是在另一台计算机上,$ 0在/ var / www / html和public_html中给出了绝对路径。可能导致这种情况的任何想法?

1 个答案:

答案 0 :(得分:1)

如果您需要知道脚本所在的位置,请使用模块FindBinFindBin是一个标准模块,随Perl一起安装。有关标准模块的列表,请参阅perldoc perlmodlib