0

Linux (openSuse) と Apache を使用して (主に) CGI アプリの開発環境を実行しています。私たちが実行しているアプリの多くは、常にCGI::Carp 'fatalsToBrowser' を持っていました。もちろん、本番環境ではそれを望んでいません。したがって、これはあるマシンで行うことですが、別のマシンでは行いません。したがって、恐ろしい CGI::Carp はコードから消える必要があります。

コマンドラインから -M でモジュールをロードできることを知っています。それは非常に簡単ですが、私には役に立ちません。コマンド ラインは必要ありません。Apache を使用した CGI が必要です。

perlrunで説明されている sitecustomize.pl と呼ばれるものがあることをperlmonksで学びました。起動時に非常に早い段階で実行されるコードを追加できます。おそらくこれを使用して、CGI 環境のチェックを追加し、モジュールをロードできます。

ドキュメントには$Config{usesitecustomize}、Perl でそれができるかどうかを確認する必要があると書かれています。残念ながら、perl -e 'print $Config{usesitecustomize}'何も得られません。$ConfigData::Dumper すると空なので、knof でさえないと感じました。

システム管理者に何かをチェックしてもらいますが、時間がかかる場合があります。

fatalsToBrowserPerl に CGI::Carp モジュールをロードさせ、Apache によって開始されるたびにインポートさせる他の方法はありますか?

4

2 に答える 2

2

リンク先の perlrun ドキュメントには、問題の perl がそれをサポートするようにコンパイルされている場合-f、コマンド ライン フラグがusesitecuistomizeオプションの実行を無効にすると記載されています ( )。-Dusesitecustomize

このオプションは、サイトごとに perl の動作を変更するのではなく、perl 構成に対してグローバルな変更を行うことを意図しているようです。

モジュールを条件付きでロードおよびインポートすることをいつでも決定できます。

# CGI::Carp is no pragma, so this works without scoping issues:
BEGIN { eval q{ use CGI::Carp qw/fatalsToBrowser/ } if DEBUG_VERSION };

whereDEBUG_VERSIONはデプロイ時に false に設定されます。

于 2013-04-03T09:11:40.360 に答える