无法在@INC中找到Connection.pm(@INC包含:/usr/local/lib/perl/5.14.2 / etc / perl /usr/local/share/perl/5.14.2 ....)at。 /select.cgi at line

时间:2012-09-14 04:42:37

标签: perl apache2 cgi httpd.conf cgi-bin

我第一次尝试用手 - > Ubuntu上的 Apache - Perl(CGI)

Apache服务器在/var/www文件夹中正常运行,可用于默认的index.html文件。但是因为我想运行CGI脚本,所以我也安装了(以防万一)DBI,正如一些论坛所建议的那样。我设置了对cgi-bin脚本所在的select.cgi文件夹的完全访问权限。我尝试多次调整select.cgi脚本将库重定向到Perl库,但无济于事。我修改了httpd.conf文件并将目录路径设置为select.cgi文件夹。那没用。我还定义了ScriptAlias,并将其设置为工作目录。那也行不通。 有没有人有任何有用的指针。感谢。

1 个答案:

答案 0 :(得分:4)

这不是您想要的确切解决方案,但整体构思如下所示。

如何解决Cant locate xxxx.pm in @INC path问题

默认情况下,perl会在标准库路径和当前目录中查找模块。 有时您需要使用安装在非标准位置的某些模块;有几种方法可以解决这种情况:

检查您的模块是否在@INC路径中使用。

示例:

perl -e 'use SOAP::Lite;'
perl -e 'use Error;'

如果在安装了SOAP::LiteError的系统上运行这些命令,Perl将只是从这些命令返回而不打印任何输出。

要检查当前标准库路径的使用:

perl -le 'print foreach @INC'

如果您具有管理权限,那么最佳解决方案是在任何系统定义的库路径中安装该模块。

设置环境变量PERL5LIB 在查看标准库和当前目录之前,Perl将在PERL5LIB环境变量中指定的目录中查找模块。 因此,您可以设置此变量来定位模块。

示例:

# For unix like systems
PERL5LIB=/home/path/lib:/usr/another/path/lib; export PERL5LIB

注意:在unix上用冒号分隔目录,在Windows上用分号分隔。

如果从命令行运行代码,请使用-I参数。语法应该类似于。

perl -I /home/path/lib -I /usr/another/lib script.pl

您还可以在脚本中添加库路径

在脚本中包含路径的命令是:use lib path

示例:

#!/usr/bin/perl
use lib "/home/path/lib";
use lib "/usr/another/lib";

use MyCustomModule;