所以我有这个脚本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中给出了绝对路径。可能导致这种情况的任何想法?
答案 0 :(得分:1)
如果您需要知道脚本所在的位置,请使用模块FindBin
。 FindBin
是一个标准模块,随Perl一起安装。有关标准模块的列表,请参阅perldoc perlmodlib
。