わかりました、12時間掘り下げた後、これが機能しました。
これが何が起こっていたかです(理由ではありません)。eval()
引用符で囲まれたuse
orステートメントを呼び出したときはいつでもrequire
(Class::Loader で発生しますが、Crypt:: フレームワークの他の場所でも発生します)、別の方法で Perl クラスパスとして含まれていたパスを認識できませんでした。引用されているほとんどの use/require オブジェクトは単にクラスがそこにあると想定しているため、有用なエラーはほとんど出されませんでした。eval ブロックの外側のファイルにダンプ@INC
すると、すべてがそこに存在します。
皮肉なことに、開発とステージングで同じセットアップを使用しましたが、開発では機能しましたが、ステージングでは機能しませんでした。また、FindBin (CGI で使用するべきではないことはわかっていますが、Crypt で使用されます) はステージングでは /dev/null について上下に揺れていましたが、開発ではそうではありませんでした。
バージョンやグローバル構成を簡単に比較できないので、ここで私の探求は終わりです。
Crypt::RSA で自分自身の問題をどのように解決したかというと、FindBin に関連付けられているすべてのコマンドを無効にしrequir
、私のコードがアクセスする可能性のあるすべてのものに対して e 参照をハードコーディングすることでした。Crypt::RSA::ES::OAEP の Crypt::RSA と Crypt::Random::Provider::rand の Crypt::Random::Generator で require を行いました
これが将来問題を抱えている人に役立つことを願っています。その理由を提案できる人は誰でも返信してください。投稿を完了するために追加します.