linux - 无法在@INC 中找到 DBI.pm 无法解析

标签 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

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

最佳答案

请参阅“使用库”的文档 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/

相关文章:

python - 如何在 Linux 上使用 Python 检查进程是否仍在运行?

linux - 如何生成一个文件夹,其中包含最后添加的 X 个文件?

php - 重新声明功能适用于旧服务器但不适用于新服务器

linux - 通过 SSH 传递脚本和字符串

ruby-on-rails - 在生产环境中运行 'rails server'

linux - 丢弃大于 1500 字节的 UDP 数据包

linux - Perl 脚本卡在 Tomcat 服务器上

javascript - 使用 Perl 或 Python 进行 Hacky 文档网站搜索

c++ - 如何使用 z3 api c++ 解析 smt2 命令?

ubuntu - 如何在 Ubuntu 16.04 上使用 Nginx 设置多个 https 虚拟服务器 block ?