好的,经过 12 个小时的深入研究,我得到了这个工作。
这就是发生的事情(但不是为什么)。每当我调用eval()
引用use
或require
语句时(如发生在 Class::Loader 中,也发生在 Crypt:: 框架中的其他位置),它无法看到以其他方式包含为 Perl 类路径的路径。由于大多数引用的 use/require 对象只是假设该类将在那里,因此很少有有用的错误被抛出。我会转储@INC
到文件,在 eval 块之外,一切都会在那里。
具有讽刺意味的是,我在 dev vs staging 中使用了相同的设置,它在 dev 中有效,但在 staging 中无效。我还必须指出,FindBin(我不应该在 CGI 中使用它,我知道,但 Crypt 使用它)在 /dev/null 中上下摆动,但在开发中却没有。
由于我无法轻松比较版本或全局配置,这就是我的任务结束的地方。
我在 Crypt::RSA 中为自己解决问题的方法是禁用与 FindBin 相关的所有命令,以及requir
我的代码可以访问的任何内容的硬编码 e 引用。我在 Crypt::RSA 中为 Crypt::RSA::ES::OAEP 做了一个要求,在 Crypt::Random::Generator 中为 Crypt::Random::Provider::rand 做了一个要求
希望这可以帮助将来遇到问题的任何人。任何可以提出原因的人,请回复,我将添加它以完成帖子。