错误说:
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
非常感谢您的帮助,谢谢你们!
答案 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列表中。您发布的第一部分输出清楚地显示您的主文件夹不在列表中。