【问题标题】:Can't locate loadable object for module main in @INC无法在 @INC 中找到模块 main 的可加载对象
【发布时间】:2017-06-05 16:47:08
【问题描述】:

在运行在 ubuntu 16.04 上的 mod_perl 应用程序中,一段时间后一切正常(几天),我们在错误日志中收到一条致命消息:

无法解析处理程序 MyHandler::ModPerl20 在 @INC 中找不到模块 main 的可加载对象

MyHander::ModPerl20 在位置块中定义

<Perl>
     unshift @INC, '/path/to/my/code';
</Perl>
<Location ~ "/imp($|/)">
    SetHandler modperl
    PerlResponseHandler MyHandler::ModPerl20
</Location>

ubuntu Perl 版本是 5.22。阿帕奇 2.4

这可能是问题吗? http://blog.feature-addons.de/2016-05-15-otrs-apache-mod-perl-perl-5-22

任何想法如何解决这个问题?我真的需要设置 nginx/uwsgi 吗?

【问题讨论】:

  • 这意味着找不到模块的二进制组件(.so)。你是如何安装 MyHandler::ModPerl20 的?
  • MyHandler::ModPerl20 是我写的一个纯 Perl Handler。它没有任何 .so 文件。几天内它确实可以@相同的安装而没有任何问题。
  • 什么是 mod_perl 中 PerResponseHandler 的可加载对象'main'?
  • 重启 apache 后。是否再次出现此错误?
  • 重启 apache 后,一切正常(这是我们目前使用的解决方法,每个 cron-job 每 24 小时重启一次 apache)。但是我又怕自己犯了一个深埋在心底的“错误”,想知道,我要在哪里寻找自己犯的错误。

标签: apache perl mod-perl


【解决方案1】:

确保@INC 设置正确,以便找到安装MyHandler::ModPerl20 的路径(我认为发生的情况是,当Apache 回收一些孩子时,重新开始的孩子没有正确的@987654324 @value,因此不再找到您的模块)。

尝试添加一个 PerlSwitches -I/your/path/for/myhandler/ 在 httpd.conf 中查看它是否解决了您的问题。

如果情况有所改变,请查看 modperl 文档中的 Adjusting @INC 以查看所有详细信息。

【讨论】:

  • @INC 设置正确(我用使用的代码更新了问题)。无论如何,它如何才能为数百个请求正常运行,然后因给出的消息而崩溃?为什么 Apache/mod_perl 在我的 Handler 中寻找模块 main?
  • 因为记忆模糊,我遇到了类似的问题,通过更改 @INC 的设置方式解决了这个问题。结果可能会根据 Apache/它的子进程的启动方式而改变。通过尝试建议的 PerlSwitches 语句,甚至将您的 MyHandler::ModPerl20 perl 模块放在您网站上以 perl 默认 @INC 硬编码的路径之一,您不会丢失任何东西,看看它是否会让您的问题消失。
  • 我无法想象这是问题所在,抱歉:(如果@INC 出错了,我会收到一条错误消息,例如:failed to resolve handler 'MyHandler::ModPerl20': Can't locate MyHandler/ModPerl20.pm in @INC 而不是Can't locate loadable object
【解决方案2】:

我在其他时候也看到过类似的情况,不仅是 SAS,其他产品也是如此。

我会请您的系统管理员检查您的 Linux 服务器中的 IO 模块。我认为他们需要重新安装,或者只是检查相关文件夹的授权。

【讨论】:

  • 如何检查 IO-Modules?这到底是什么意思?
【解决方案3】:

将 MPM Apache 配置从 mpm_event 更改为 mpm_prefork 解决了我的问题。

虽然它没有解释错误消息:(对此的任何提示表示赞赏。

【讨论】:

  • 在升级 Perl 时遇到了同样的问题。它必须是我的模块和/或 mod_perl 中的某种竞争条件。感谢您的提示!
猜你喜欢
  • 1970-01-01
  • 2013-05-19
  • 2019-07-27
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多