修复 shebang #!/usr/bin/perl 和 #!/usr/local/cpanel/3rdparty/bin/perl 使用的路径

修复 shebang #!/usr/bin/perl 和 #!/usr/local/cpanel/3rdparty/bin/perl 使用的路径

我找不到任何人可以帮助我解决这个问题。最近 centos 更新后我的 CGI 脚本使用:

#!/usr/local/cpanel/3rdparty/bin/perl

或者

#!/usr/bin/perl

正在尝试使用旧的 perl 版本 5.16.3

但他们应该使用当前的 cpanel 版本 5.30.0

如果我登录 ssh 并运行

/usr/local/cpanel/3rdparty/bin/perl -v我得到 5.30.0

所以我需要编辑 shebang 使用的路径并将其编辑为/usr/local/cpanel/3rdparty/bin/perl

帮助 ?

答案1

如果您发现#!Perl 脚本中的 -line 似乎没有生效(这里似乎就是这种情况),那么很可能是因为脚本是用明确的解释器,如

perl somescript.pl

在这种情况下,#!-行将被完全忽略,并且实际的 perl使用的二进制文件将是在$PATH.

如果您可以更改调用脚本的方式,那么理想情况下您应该更改它以删除显式perl命令。这将使#!脚本中的 -lines 生效(假设脚本可执行)。

或者,您可以安排$PATH变量,以便perl找到的第一个二进制文件就是您想要使用的二进制文件。例如,您可能想要设置

PATH=/usr/local/cpanel/3rdparty/bin:$PATH

用于 CGI 脚本执行的环境。这将解决这个问题除非调用是usr/bin/perl明确的。由于问题中没有说明正在使用什么 Web 服务器软件或框架,或者如何配置它来运行 Perl 脚本,所以我只能说这些。

答案2

找到修复方法:

以 root 身份在 SSH 中:

cd /usr/bin

rm -f perl

ln -s /usr/local/cpanel/3rdparty/bin/perl .

这为两者设置了 shebang

#!/usr/bin/perl

#!/usr/local/cpanel/3rdparty/bin/perl

使用 cpanel 更新的 perl 发现:

/usr/local/cpanel/3rdparty/bin/perl

相关内容