当前位置: 首页 > 知识库问答 >
问题:

为什么 perl cgi 不编译 CPAN 模块

顾文昌
2023-03-14

我的操作系统是 Debian Buster。我的 cgi-bin 在 /var 中。CPAN 模块是 HTML::Template,位于 cpanm 安装的 /perl5/lib/perl5/HTML 中。我的服务器是 Apache2,我所做的所有研究似乎都正确配置了(但一定是某处出了问题)。我的浏览器是 火狐 ,但我也使用 curl 进行测试。我可以成功地从localhost/cgi-bin/运行没有perl模块的cgi perl脚本。我可以从命令行使用“使用 HTML::Template”运行 perl 脚本,并带有完美的 HTML 输出 ./ 但是,这就是问题所在,当它们包含 perl 模块(如 HTML::Template)时,我无法使用浏览器或 curl 从本地主机运行它们。

Apache2错误消息是BEGIN failed -编译在/var/cgi-bin/templateOne.cgi第5行中止。:/var/CGI-bin/templateOne.cgi[Wed Oct 16 00:01:23.341309 2019][CGI:error][PID 3743][client::1:36728]头之前的脚本输出结束:template one . CGI

现在脚本的第5行是使用HTML::Template;

因此,它无法定位或编译模块,但由于程序可以从命令行完美运行,所以我认为Apache2无法定位模块。

我尝试过使用push(@INC,“//Perl5/lib/Perl5/HTML”);在脚本开始时,但这也不起作用。

有人有什么建议吗?

共有1个答案

竺绍辉
2023-03-14

感谢那些提供评论的人。我使用了 Grinnz 给出的建议,他向我指出使用“use lib /path /to /module” 通过使用 use lib 语句和模板模块的路径作为脚本的第二行,在使用 HTML::Template 语句之前,脚本运行良好。再次感谢。

 类似资料:
  • 问题内容: 我正在尝试使用泛型实现以下结构。收到编译器错误,无法找出原因。 这个想法是译者使用T作为字典中键的类型。例如,可以是字符串或枚举。子类提供具体的字典。 但是它失败,因为:“类型’String’不符合协议’Hashable’” 但是String符合Hashable。它也不适用于Int,后者也符合Hashable。 如果删除类型约束,则仅用于测试(在此我还必须禁用字典,因为我不能在其中使用

  • 我有一个简单的测试设置,如 但当我尝试编译测试时,我会遇到53个错误,比如 实际上并没有传达任何关于问题所在的有用信息。我只能假设在我的构建中没有正确配置某些内容。sbt文件或其他地方。 这段代码确实曾经工作过,在我清理东西的过程中,事情发生了变化,现在它被破坏了,没有好的诊断。 有人能提出要找的东西吗?

  • 问题内容: 如果你给 它没有编译,但是带有花括号的相同代码是: 有什么解释? 问题答案: 基本上,变量声明只能在块中声明。 查看 Java语言规范中“语句”的语法 -它包括Block,但不包括LocalVariableDeclarationStatement- 后者是block语法的一部分。 这实际上是实用主义的问题:如果没有括号,则只能使用一个语句。如果没有后续语句,则声明变量是没有意义的,因为

  • 奇怪的是,标记为“OK”的行编译得很好,但标记为“Error”的行失败了。它们看起来基本上是一样的。