問題タブ [mod-perl2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - mod_perl 2 環境での WebApp 構成
mod_perl 2 で作成している Web アプリがあります (これはカスタム ハンドラー モジュールであり、レジストリや perlrun スクリプトではありません)。サーバーの初期化時に、できれば構成ファイルから設定したい構成オプションがいくつかあります。私が抱えている問題は、アプリの構成ファイルのファイル名を渡すのに適した場所が見つからないことです。
最初に「./app.conf」をロードしようとしましたが、現在のディレクトリはモジュールの場所ではないため、予測不能でエラーが発生しやすくなります。または、何らかのパス (相対パスまたは絶対パス) を想定する必要があります。これは柔軟性がなく、ホスト OS ディストリビューションが変更された場合に問題になる可能性があります。パスをハードコーディングしたくありません (ただし、他に良い方法がない場合は、/etc 内の何かが許容される場合があります)。
PerlSetVar も試しましたが、値はリクエスト時まで利用できません。これは実行可能ですが、子 (スレッド) の初期化ごとに少なくとも 1 回はディスクから構成ファイルを読み取る可能性があることを意味します。サーバーの初期化時にロードし、子が作成されたときに生成された環境の一部である不変の静的ハッシュを使用したいと考えています。
config.pl を使用することを検討しましたが、これは、app.conf ファイルの場所を構成するための 1 つのオプションを含む config.pl を使用するか、オプション自体を config.pl に移動してエンドユーザーに Perl を尊重するよう要求することを意味します。オプションを設定するときの構文。将来のユーザーは内部管理者になるので、それは不合理ではありませんが、私が望むよりも複雑です.
それで、私は何が欠けていますか?良い代替案はありますか?
perl-module - プロキシクレデンシャルを使用してURLを監視するPerlスクリプト?
次のコードを手伝ってください。これは私たちの環境では機能していません。
出力:
google.com:80に接続できません(タイムアウト)
LWP :: Protocol :: http :: Socket:connect:C:/Perl/lib/LWP/Protocol/http.pmの51行目でタイムアウト。
OS:Windows XP
よろしく、ガウラフ
perl - Apache2 で引用符なしの Cookie を解析する際の例外
私はApache2::Cookie (つまり、mod_perl を使用した Apache2)を使用してCookie を解析しています。
このコードは何年も問題なく本番環境で実行されています。特定の形式の Cookie が原因で例外がスローされることを知りましたExpected token not present
。問題の Cookie は、クライアント側の JavaScript によって生成されます。
Apache2::Cookie はコンマを好まないようです。
このエラーは でキャッチできますeval
が、Cookie の取得はコード内の多くの場所で行われます (そうです、除外することもできましたが、率直に言って、コードは非常に単純なのでその必要はありませんでした)。いずれにせよ、それは今そこにあるので、私が設定していない、必要のないこの Cookie の例外を追跡してキャッチする必要があります。
への数十回の呼び出しをリファクタリングするよりも、この例外を取り除く簡単な方法はありApache2::Cookie->fetch
ますか? を再定義するかApache2::Cookie::fetch
、グローバル フラグを設定しlibapreq
てこれを吐かないようにするか (私が見つけることができるものはありません)、または私が見逃している他の明るいアイデアを見つけます。
perl - ModPerl::Registryを使用してレガシーCGIスクリプトのデフォルトのmod_perlエラーページを抑制する方法
私はPerlにHTTPエラーページをそれ自体で生成するCGIスクリプトを持っています。次のApache2構成を使用して、ModPerl::Registryを介してmod_perlで実行しています。
少しの問題を除いて、すべて問題ありません。ヘッダーに出力されるHTTPステータスが200と異なる場合(たとえば404)、ApacheはデフォルトのHTMLエラードキュメントを自分で生成した応答に追加します。
たとえば、次の単純なCGIスクリプトを取り上げます。
上記のApache構成で実行すると、次のようになります。
exit;
上記のCGIスクリプトの例では、「 mod_perlのデフォルトのApacheエラードキュメントを抑制するにはどうすればよいですか? 」で推奨されているように、return Apache2::Const::OK;
またはのいずれかに置き換えることに注意してください。SOに関する質問は役に立ちません。結果は同じままです。return Apache2::Const::DONE;
Apache構成で何を修正する必要がありますか、またはmod_perl / Apacheによる生成された応答へのエラーページの追加を抑制するためにCGIスクリプトに何を追加する必要がありますか?
perl - perl cgi から動作しないダイ
CGIページから生成され、単独で実行されるデーモンプロセスになるperlスクリプトがあります。使用しているモジュールから呼び出されたダイがある場合、スクリプトは eval ブロックで処理されていても呼び出されます。ただし、コマンド プロンプトからスクリプトを実行すると、すべて問題なくエラーが処理されます。
注:コマンドラインからも、スクリプトはデーモンになります
perl - APR::UUIDモジュールによって生成された識別子の保証された一意性は何ですか
Data::UUIDのドキュメントには次のように記載されています
UUIDは128ビット長であり、3400CEまでに生成された他のすべてのUUID/GUIDとは異なることが保証されています。
APR :: UUIDのドキュメントには、生成された識別子がランダムとして記述されています。
これは、APR :: UUIDによって作成されたGUIDが一意であることが保証されていないことを意味しますか?
apache - ネストされたパスの場合、動的コンテンツの Apache Location ディレクティブが失敗する
Apache 2.2x を使用しています。ほとんどのコンテンツは mod_perl を介して生成されます。つまり、ファイル システム マッピングのない動的コンテンツです。<ロケーション>を存分に活用。
アパッチ構成:
Module1 は機能し、私のセットアップが他の方法で機能することを示すためにここに示されています。
Module2 は機能しません。Apache は「ファイルが存在しません: /home/joe/www/htdocs/finance」と言います。モジュール構成の唯一の違いは、Module2 の場所に複数のスラッシュが含まれていることです (これをネストされたパスと呼んでいます)。
「ファイルが存在しません」エラーについて: もちろん存在しません。ファイルやディレクトリではなく、場所です。では、なぜこれが起こるのですか?
多くの mod_perl モジュールを持っているので、複数のスラッシュを含むパスを使用できるようにしたいと考えています。また、制御のために分類すると便利です。1 つの些細な例として、robots.txt は単純に次のように記述できます。
Apache ドキュメントでは、 < Location > ディレクティブはファイルシステムにマップする必要がなく、動的に生成されるコンテンツに適していると具体的に述べています。
私は何を間違っていますか?回避策はありますか? (明らかな「それをしないでください」以外に)。
ありがとう。
perl - Perl プログラムが mod_perl で実行されているかどうかをどのように確認できますか?
Perl プログラムが mod_perl で実行されているかどうかをどのように確認できますか?
グローバル変数または環境変数に沿って考えています。
私は mod_perl >= 2 についてだけ気にしています。
perl - modperl2でXML::Parserを使用しようとしたときにエラーが発生しました-モジュールを読み込めませんでした
本番環境(AIX 5.3)のmodperlセットアップでXML::Parserを使用しているときに問題が発生しました。開発では正常に動作しますが、本番環境では次のエラーで失敗します。
expat / expat-develライブラリは/opt/freeware/lib
、パッケージ(devとliveで同じもの)を使用してインストールされ、両方とも以下からの同じ出力を示しますldd Expat.so
。
dotfilesとmod_env構成の両方でLIBPATHを設定しようとしましたが、うまくいきませんでした。誰かが正確な答えを知っているとは思っていませんが、何を試すことができるかについてのアイデアが不足しているので、いくつかの提案を試してみたいと思っています。
編集:XML :: Parserを使用した同じスクリプトが、ライブサーバー上の通常のcgi-binスクリプトとして完全に機能することも指摘しておく必要があります。
security - ハンドラーでHTML::Mason引数をサニタイズしますか?
私はを使用してHTML::Mason
いますが、最近のセキュリティ監査の結果、一部のソフトウェアがヘッダーインジェクションに対して脆弱であることが判明しました。具体的にはsession_id
、これは引数に関連しており、引数は渡されてGET
要求されPOST
ます。
handler()
カスタムハンドラーからメソッドの環境を変更しようとしましたが、Apache2::RequestRec
はすでに作成されているため、変更を取得しません。
ハンドラーレベルですべての入力をHTML::Masonにサニタイズする良い方法はありますか?