无法在@INC中找到DBI.pm无法解决

时间:2017-02-17 11:44:42

标签: linux perl ubuntu

错误说:

Can't locate DBI.pm in @INC (@INC contains
    /etc/perl 
    /usr/local/lib/perl/5.14.2 
    /usr/local/share/perl/5.14.2 
    /usr/lib/perl5 
    /usr/share/perl5 
    /usr/lib/perl/5.14 
    /usr/share/perl/5.14 
    /usr/local/lib/site_perl .) at /usr/lib/cgi-bin/helloworld.pl line 7.

但我已经使用

将模块的路径添加到环境变量中
export PERL5LIB=/home/vagrant/perl5/lib/perl5/i686-linux-gnu-thread-multi-64int

当我使用perl -V进行检查时,它已包含在内,请参阅以下内容:

%ENV:
    PERL5LIB="/home/vagrant/perl5/lib/perl5"
    PERL_LOCAL_LIB_ROOT="/home/vagrant/perl5"
    PERL_MB_OPT="--install_base "/home/vagrant/perl5""
    PERL_MM_OPT="INSTALL_BASE=/home/vagrant/perl5"
  @INC:
    /home/vagrant/perl5/lib/perl5/5.14.2/i686-linux-gnu-thread-multi-64int
    /home/vagrant/perl5/lib/perl5/5.14.2
    /home/vagrant/perl5/lib/perl5/i686-linux-gnu-thread-multi-64int <--- My module
    /home/vagrant/perl5/lib/perl5
    /etc/perl
    /usr/local/lib/perl/5.14.2
    /usr/local/share/perl/5.14.2
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.14
    /usr/share/perl/5.14
    /usr/local/lib/site_perl

我的机器是Ubuntu 16.04.2 LTS

非常感谢您的帮助,谢谢你们!

1 个答案:

答案 0 :(得分:0)

请参阅“使用lib”here和“perl run”here以及Ubuntu环境变量here的文档。

我怀疑你是从不同的环境运行脚本的。 shell提示符与httpd服务器使用的环境不同,这也与cron程序使用的不同。向环境添加环境变量时,它仅在您的环境中(通常只是您环境中的实例)而不是其他环境变量。那些其他应用程序无法查看或读取您的环境变量。

我猜这里是因为你没有提供任何代码,只是在'使用DBI'之前将以下几行添加到你的脚本中可以帮助你:

use lib "/home/vagrant/perl5/lib/perl5";
use lib "/home/vagrant/perl5/lib/perl5/i686-linux-gnu-thread-multi-64int";

我说可能因为,正如伟大的池上指出的那样,如果这个单独的应用程序环境无法访问您的目录,那么它就不会将这些文件夹添加到@INC列表中。您发布的第一部分输出清楚地显示您的主文件夹不在列表中。