我们将旧服务器上的所有内容都移到了新服务器上。我们的新服务器上的一个网站使用Perl后端。当我在浏览器中转到该Perl站点时,将引发500个内部服务器错误。当我从命令行像这样运行Perl脚本时:
perl -wc login.pl
我收到此错误:
Can't locate LoadINC.pm
在login.pl的顶部是这样的:
#!/ usr / bin / perl
开始{使用LoadINC; }
...
因此,看起来LoadINC我们的新服务器缺少了Perl模块。
旧服务器仍在运行,并且没有此问题。因此,我的想法是将LoadINC模块定位在旧服务器上,然后将其放在新服务器上的同一位置。还是有更好的方法?模块是否隐藏在某个二进制文件中?两台服务器上查找Perl模块的位置是否不同?
需要注意的另一件事是,旧服务器上的Perl版本是5.8.8,而新服务器上的版本是5.16.3。
如何在Linux服务器上查找Perl模块的位置?
perl -mFoo::Bar -le'print $INC{"Foo/Bar.pm"}'
Run Code Online (Sandbox Code Playgroud)
要么
perldoc -lm Foo::Bar
Run Code Online (Sandbox Code Playgroud)
在这种情况下,
perl -mLoadINC -le'print $INC{"LoadINC.pm"}'
Run Code Online (Sandbox Code Playgroud)
要么
perldoc -lm LoadINC
Run Code Online (Sandbox Code Playgroud)
因此,我的想法是将LoadINC模块放在旧服务器上,然后将其放在新服务器上的同一位置。还是有更好的方法?
我们应该如何知道如何安装模块?
大多数模块使用以下一种安装
perl Makefile.PL
make test
make install
Run Code Online (Sandbox Code Playgroud)
要么
perl Build.PL
./Build test
./Build install
Run Code Online (Sandbox Code Playgroud)
简单地复制文件可能会起作用,但是有许多原因导致它不起作用。从好的方面来说,您会立即知道它在大多数情况下是否有效。
两台服务器上查找Perl模块的位置是否不同?
搜索的目录列表肯定会有所不同(考虑到版本的差异),尽管两个内部版本可能具有相同的目录。
与体系结构无关的模块应安装在以下命令的输出所命名的目录中:
perl -V:installprivlib
Run Code Online (Sandbox Code Playgroud)