我找不到任何人可以帮助我解决这个问题。最近 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