错误说:
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
非常感谢你们的帮助,谢谢你们!
最佳答案
请参阅“使用库”的文档 here和 'perl 运行' 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";
我说可能是因为,正如伟大的 ikegami 指出的那样,如果这个单独的应用程序环境无法访问您的目录,那么它不会将这些文件夹添加到 @INC 列表中。您发布的第一部分输出清楚地表明您的主文件夹不在列表中。
关于linux - 无法在@INC 中找到 DBI.pm 无法解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42297089/