从命令行执行.cgi(作为有权访问数据库的用户),我得
install_driver(Pg)失败:无法在@INC中找到DBD / Pg.pm(@INC包含: /Library/Perl/5.12/darwin-thread-multi-2level /Library/Perl/5.12 /Network/Library/Perl/5.12/darwin-thread-multi-2level /Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.4 /System/Library/Perl/5.12/darwin-thread-multi-2level /System/Library/Perl/5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/Perl/Extras/5.12。)at(eval 4)第3行。 也许DBD :: Pg perl模块还没有完全安装, 或许'Pg'的大写不正确。
cpan -D DBD :: Pg显示
DBD :: PG
DBI的Postgres驱动程序 T / TU / TURNSTEP / DBD-PG-2.19.2.tar.gz /opt/local/lib/perl5/site_perl/5.12.4/darwin-thread-multi-2level/DBD/Pg.pm 安装:2.19.2 CPAN:2.19.2最新 DBD :: Pg开发人员(DBDPG) dbd-pg@perl.org
尝试通过PERL5LIB或PERLLIB导出上述路径没有不同的结果。
.cgi引用/ usr / bin / perl,告诉
这是为darwin-thread-multi-2level构建的perl 5,版本12,subversion 4(v5.12.4) (有2个已注册的补丁,有关详细信息,请参阅perl -V)
我喜欢永久地将模块路径设置为安装DBD :: Pg的路径(/ opt / ...)。我想知道为什么错误输出目录列表没有提到它。
我通过cpanm安装了DBD :: Pg。
我使用Mac OS X Mountain Lion。
答案 0 :(得分:7)
您似乎安装了两个不同的Perl版本。运行脚本的脚本与用于运行脚本的脚本不同cpan
。要使用正确的Perl安装DBD :: Pg,请使用
perl -MCPAN -e'install DBD::Pg'
如果需要,将perl
替换为用于运行脚本的Perl的路径。
答案 1 :(得分:2)
/ opt / ...表示“第三方”Perl。 “哪个perl”,“哪个cpan”表示运行capn使用第三方Perl。这是MacPort的。当我使用cpan和cpanm安装时,第三方Perl得到了更新。执行不同的用户和/ usr / bin / perl shebang指示使用Mac OS X perl。由于我必须使用shebang和不同的用户,我必须使用Mac OS X perl。通过/ usr / bin / cpan显式添加模块DBD :: Pg将模块安装到Mac OS X Perl。现在我的.cgi运行了。切换到第三方Perl的替代方案是将shebang更改为“... / env perl”或在文件系统中使用别名。