2016-09-29 19 views
1

Apache服务器的配置,这就是为什么有些模块没有得到正确使用。当我检查我的错误日志时,它显示我的预期模块无法找到,它指向/users/local/perl6用所以基本上我的Apache服务器没有使用相同的perl的版本我有什么在OS环境的权利perl的版本

当我在终端做perl -v,它说,this is perl 5, version 16。重置我的apache服务器以使用正确版本的perl的最佳方式是什么?

+1

取决于它使用拿起它是用perl版本什么方法。这可能是脚本本身。这可能是由mod_perl引起的(尽管我不认为如果涉及perl6的话)。这可能归结于Apache配置的某些部分。 – Quentin

+0

@Quentin什么是最好的方式来指定我想在我的Perl脚本中选择的Perl版本? (或者有什么办法?) – user3669481

+0

首先,看看你打的CGI脚本中的shebang。这是以'#!'开头的第一行。 – simbabque

回答

-1

特定操作系统上运行的Apache可能的最佳方式有些关系。但是,假设没有mod_perl,我在* nix系统和Windows上使用的一种方法是在脚本的shebang行中包含所需的解释器的完整路径。也就是说,脚本的第一行应该以“#!”开头。然后是所需的翻译。对于你的服务器,它应该是: #!/path/to/Perl5/perl

+0

这可以防止移植脚本到其他系统中的perl也许在不同的路径 –

+0

我同意,这可能是一个合理的假设,即user3669481有这个盒子的root访问权限,它是一个* nix的箱子,但设置的路径环境只有在有权访问的情况下才可用。如果您使用的是低成本托管公司,则可能没有必要的访问权限。 shebang line方法在更多情况下可供更多人使用;有些人甚至认为它是Eugen Konkov's的高级答案。这不值得投票。 – djplaistow

+0

错误的schebang会造成很多问题。你如何自动化测试?你的假设可能只是作为最后的手段和快速修复。你应该三思而后行。甚至不建议使用'#!/ usr/bin/perl'。 '如果你有权这样做'如果你仔细阅读答案并关注链接,你可能会注意到'SetEnv'上下文是'服务器配置,虚拟主机,目录,**。htaccess **' –

0

正确的方法是配置PATH env变量的权利。要了解当前的env变量使用:

#!/usr/bin/env perl 

print "Content-Type: text/plain\n"; 
print "\n\n"; 

use Data::Dumper qw/ pp /; 
print pp \%ENV; 

How to setup env variables from apache config

例如,如果你想为Apache你安装它安装perl的具体版本为/home/www/perl目录(这里我们使用www用户运行Apache服务器)和set PATH

SetEnv PATH /home/www/perl/bin 

,如果你需要,否则不要覆盖当前PATH值。

如果你想看到的Perl是干什么用的 - 运行:

#!/usr/bin/env perl 

print "Content-Type: text/plain\n"; 
print "\n\n"; 

print `which perl` 
相关问题