我已经下载了草莓PERL并在Winxp sp3上用CGI Perl Apache编写了一个应用程序。
我使用的其中一个库(由其他人编写)使用XML :: LibXML。当我加载页面时,它给出了内部服务器错误。从Apache错误日志中我可以看到此错误:
无法为模块XML :: LibXML加载'C:/strawberry/perl/site/lib/auto/XML/LibXML/LibXML.dll':load_file:在C:/ strawberry中找不到指定的模块/perl/lib/DynaLoader.pm第190行。
C:/strawberry/perl/site/lib/auto/XML/LibXML/LibXML.dll存在所有权限。
此库也适用于Linux。如果我删除所有需要LibXML的代码,我的应用程序也可以正常工作
任何人都可以告诉我什么时候可以在这里发布。
答案 0 :(得分:6)
如果您查看DynaLoader的来源,您将找到
许多动态扩展加载问题似乎来自 这部分代码:XYZ在DynaLoader.pm的第123行失败。 通常这些错误实际上发生在初始化中 扩展XS文件的C代码。 Perl报告错误 在这个perl代码中只是因为这是最后一个perl代码 它被执行了。
您应该已经(但可能没有注意到)以下对话框,它提供了更准确的错误消息:
问题不在于perl无法找到LibXML.dll;它是LibXML.dll无法找到真正的libxml。 (前者只是为后者提供Perl绑定的包装器。)要解决此问题,您需要确保Strawberry Perl的c\bin
文件夹位于PATH中。在您的情况下,那将是C:\strawberry\c\bin
。
答案 1 :(得分:1)
您可能需要检查窗口中的环境变量设置, 确保PATH变量中存在模块的安装路径。 它在linux中工作的原因是make文件通常在linux中为你设置环境变量,它可能没有正确设置。 例如; 转到控制面板\系统和安全\系统单击更改设置,然后在用户变量部分中的高级选项卡查看是否存在名为perl5lib的变量。 如果没有创建一个新的perl5lib变量并添加你的库的路径(usuall C:\ Perl \ site \ lib,但在你的情况下可能会有所不同)
答案 2 :(得分:0)
安装Strawberry Perl之后,我遇到了同样的问题。当我从服务器而不是从自动化工具远程运行脚本时,它运行良好。问题是由于远程运行时未更新环境变量。因此,我重新启动了服务器,从而解决了该问题。