0

从命令行执行 .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) line 3. 也许 DBD::Pg perl 模块没有已完全安装,或者“Pg”的大小写不正确。

cpan -D DBD::Pg 显示

DBD::Pg

已安装 DBI 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 的 Postgres 驱动程序: 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 山狮。

4

2 回答 2

7

您似乎安装了两个不同版本的 Perl。用于运行脚本的脚本与用于运行脚本的脚本不同cpan。要使用正确的 Perl 安装 DBD::Pg,请使用

perl -MCPAN -e'install DBD::Pg'

如有必要,替换perl为用于运行脚本的 Perl 的路径。

于 2012-08-02T21:21:51.757 回答
2

/opt/... 表示“第 3 方”Perl。"which perl", "which cpan" 表明运行 capn 使用了第 3 方 Perl。那是MacPort的。当我使用 cpan 和 cpanm 安装时,第 3 方 Perl 得到了更新。以不同的用户身份执行并且 /usr/bin/perl shebang 指示要使用 Mac OS X perl。因为我必须使用 shebang 和不同的用户,所以我必须使用 Mac OS X perl。通过 /usr/bin/cpan DBD::Pg 显式添加模块会将模块安装到 Mac OS X Perl。现在我的 .cgi 运行了。切换到第 3 方 Perl 的替代方法是将 shebang 更改为“.../env perl”或在文件系统中使用别名。

于 2012-08-02T20:13:03.027 回答