0

在生产中(在 AIX 5.3 上)的 modperl 设置下使用 XML::Parser 时遇到了问题。它在开发中工作正常,但在生产中失败并出现以下错误:

    [Tue Apr 03 08:44:03 2012] [error] Can't load '/wload/es1p/app/perl/lib/site_perl/5.10.1/aix/auto/XML/Parser/Expat/Expat.so' for mo
ule XML::Parser::Expat: Could not load module /wload/es1p/app/perl/lib/site_perl/5.10.1/aix/auto/XML/Parser/Expat/Expat.so.\n\tDepe
dent module /wload/es1p/app/usr/local/apache2/lib/libexpat.a(libexpat.so.1) could not be loaded.\n\tMember libexpat.so.1 is not fou
d in archive \nCould not load module /wload/es1p/app/perl/lib/site_perl/5.10.1/aix/auto/XML/Parser/Expat/Expat.so.\n\tDependent mod
le /wload/es1p/app/perl/lib/site_perl/5.10.1/aix/auto/XML/Parser/Expat/Expat.so could not be loaded. at /wload/es1p/app/perl/lib/5.
0.1/aix/DynaLoader.pm line 200.\n at /wload/es1p/app/perl/lib/site_perl/5.10.1/aix/XML/Parser.pm line 18\nCompilation failed in req
ire at /wload/es1p/app/perl/lib/site_perl/5.10.1/aix/XML/Parser.pm line 18.\nBEGIN failed--compilation aborted at /wload/es1p/app/p
rl/lib/site_perl/5.10.1/aix/XML/Parser.pm line 22.\nCompilation failed in require at /wload/es1p/app/perl/lib/site_perl/5.10.1/XML/
Path/XMLParser.pm line 7.\nBEGIN failed--compilation aborted at /wload/es1p/app/perl/lib/site_perl/5.10.1/XML/XPath/XMLParser.pm li
e 7.\nCompilation failed in require at /wload/es1p/app/perl/lib/site_perl/5.10.1/XML/XPath.pm line 13.\nBEGIN failed--compilation a
orted at /wload/es1p/app/perl/lib/site_perl/5.10.1/XML/XPath.pm line 13.\nCompilation failed in require at /wload/es1p/app/perl/lib
site_perl/5.10.1/Net/SAML2/IdP.pm line 23.\nBEGIN failed--compilation aborted at /wload/es1p/app/perl/lib/site_perl/5.10.1/Net/SAML
/IdP.pm line 23.\nCompilation failed in require at /wload/es1p/app/perl/lib/site_perl/5.10.1/Net/SAML2.pm line 69.\nBEGIN failed--c
mpilation aborted at /wload/es1p/app/perl/lib/site_perl/5.10.1/Net/SAML2.pm line 69.\nCompilation failed in require at /wload/es1p/
pp/usr/local/apache2/perl-bin/sso.pl line 4.\nBEGIN failed--compilation aborted at /wload/es1p/app/usr/local/apache2/perl-bin/sso.pl

expat/expat-devel 库是/opt/freeware/lib使用一个包安装的(在开发和实时版本中相同),并且两者都显示相同的输出ldd Expat.so

Expat.so needs:
     /usr/lib/libc.a(shr.o)
     /opt/freeware/lib/libexpat.a(libexpat.so.1)
     /unix
     /usr/lib/libcrypt.a(shr.o)

我已经尝试在我们的 dotfiles 和我们的 mod_env 配置中设置 LIBPATH,但没有运气。我不希望有人知道确切的答案,但我已经没有什么可以尝试的想法了,所以我希望有一些建议可以尝试。

编辑:我还应该指出,使用 XML::Parser 的相同脚本在我们的实时服务器上与普通的 cgi-bin 脚本一样完美。

4

1 回答 1

0

一个想法:也许您的产品服务器上安装了两个不同的 XML::Parser。您的 CGI 选择一个,而您的脚本选择另一个?

从脚本(在 prod 和 dev 上)和您的工作 CGI 中打印出 @INC 并比较结果。

问候,

于 2012-04-03T12:29:26.793 回答