初期化とブートストラップの概要

Commerce アプリケーションを実行するには、次のアクションを pub/index.php に実装します。

  • エラー処理、オートローダーの初期化、プロファイル オプションの設定、および既定のタイムゾーンの設定などの基本的な初期化ルーチンを実行する ]bootinitial0}app/bootstrap.php} を含めます。[
  • \Magento\Framework\App\Bootstrap.php のインスタンスを作成します
  • Commerce アプリケーションインスタンスを作成します:\Magento\Framework\AppInterface
  • Commerceの実行

Bootstrap実行ロジック

Bootstrap オブジェクトは、次のアルゴリズムを使用してCommerce アプリケーションを実行します。

  1. エラーハンドラーを初期化します。

  2. すべての場所で使用され、環境の影響を受ける オブジェクト マネージャと基本的な共有サービスを作成します。 環境パラメーターは、これらのオブジェクトに適切に挿入されます。

  3. メンテナンスモードが有効 ではない とアサートし、有効でない場合は終了します。

  4. Commerce アプリケーションがインストールされていることをアサートします。インストールされていない場合は終了します。

  5. Commerce アプリケーションを起動します。

    アプリケーションの起動中にキャッチされなかった例外は、例外の処理に使用できる catchException() メソッドでCommerceに自動的に返されます。 後者は、true または false のいずれかを返す必要があります。

    • true の場合:Commerceが正常に例外を処理しました。 他に何もする必要はありません。
    • false: (またはその他の空の結果)Commerceが例外を処理しなかった場合。 Bootstrap オブジェクトは、デフォルトの例外処理サブルーチンを実行します。
  6. アプリケーションオブジェクトによって提供された応答を送信します。

    note info
    INFO
    Commerce アプリケーションがインストールされており、メンテナンスモードではないというアサーションが、\Magento\Framework\App\Bootstrap クラスのデフォルトの動作です。 Bootstrap オブジェクトの作成時に、エントリポイントスクリプトを使用して変更できます。

    Bootstrap オブジェクトを変更するエントリ ポイント スクリプトの例:

    code language-php
    <?php
    use Magento\Framework\App\Bootstrap;
    require __DIR__ . '/app/bootstrap.php';
    
    $params = $_SERVER;
    $params[Bootstrap::PARAM_REQUIRE_MAINTENANCE] = true; // default false
    $params[Bootstrap::PARAM_REQUIRE_IS_INSTALLED] = false; // default true
    $bootstrap = Bootstrap::create(BP, $params);
    
    /** @var \Magento\Framework\App\Http $app */
    $app = $bootstrap->createApplication('Magento\Framework\App\Http');
    $bootstrap->run($app);
    

デフォルトの例外処理

ブートストラップオブジェクトは、Commerce アプリケーションがキャッチされなかった例外を処理する方法を次のように指定します。

  • 開発者モードでは、は例外をそのまま表示します。
  • その他のモードでは、は例外をログに記録し、一般的なエラーメッセージを表示しようとします。
  • エラーコード 1 でCommerceを終了します

エントリポイントアプリケーション

次のエントリポイントアプリケーション(Web サーバーでディレクトリインデックスとして使用される、Commerceで定義されたアプリケーション)があります。

HTTP エントリポイント

\Magento\Framework\App\Http は次のように動作します。

  1. アプリケーション領域を決定します。

  2. コントローラ アクションを検索して実行するために、フロント コントローラとルーティング システムを開始します。

  3. HTTP 応答オブジェクトを使用して、コントローラアクションから取得した結果を返します。

  4. エラー処理(優先順位が次の順):

    1. 開発者モードを使用している場合:

      • Commerce アプリケーションがインストールされていない場合は、セットアップウィザードにリダイレクトします。
      • Commerce アプリケーションがインストールされている場合は、エラーと HTTP ステータスコード 500 (内部サーバーエラー)を表示します。
    2. Commerce アプリケーションがメンテナンスモードの場合は、HTTP ステータスコード 503 (サービス利用不可)の、使いやすい「サービス利用不可」ランディングページを表示します。

    3. Commerce アプリケーションがインストールされて ない 場合は、セットアップウィザードにリダイレクトします。

    4. セッションが無効な場合は、ホームページにリダイレクトします。

    5. その他のアプリケーション初期化エラーがある場合は、HTTP ステータスコード 404 (見つかりません)を含む、ユーザーにわかりやすい「ページが見つかりません」ページを表示します。

    6. その他のエラーでは、HTTP 応答 503 を使用してユーザーにわかりやすい「サービス利用不可」ページを表示し、エラーレポートを生成して、その ID をページに表示します。

静的リソースエントリポイント

\Magento\Framework\App\StaticResource は、静的リソース (CSS、JavaScript、画像など)を取得するためのアプリケーションです。 リソースがリクエストされるまで、静的リソースを使用したすべてのアクションが延期されます。

INFO
静的ビューファイルのエントリポイントは、サーバーでの潜在的な攻撃を回避するために 実稼動モードでは使用されません。 実稼動モードでは、Commerce アプリケーションは、必要なすべてのリソースが <your Commerce install dir>/pub/static ディレクトリに存在することを想定します。

デフォルトまたは開発者モードでは、存在しない静的リソースに対するリクエストは、適切な .htaccess で指定された書き換えルールに従って静的エントリポイントにリダイレクトされます。
リクエストがエントリポイントにリダイレクトされると、Commerce アプリケーションは、取得されたパラメーターに基づいてリクエストされた URL を解析し、リクエストされたリソースを見つけます。

  • 開発者モードでは、リソースがリクエストされるたびに返されるコンテンツが最新の状態になるように、ファイルのコンテンツが返されます。

  • デフォルトモードでは、取得したリソースは公開され、以前にリクエストした URL からアクセスできるようになります。

    静的リソースに対する今後のリクエストはすべて、静的ファイルと同じようにサーバーによって処理されます。つまり、エントリポイントが関係なくなります。 公開済みのファイルを元のファイルと同期する必要がある場合は、pub/static ディレクトリを削除する必要があります。その結果、ファイルは次のリクエストで自動的に再公開されます。

メディアリソースのエントリポイント

Magento\MediaStorage\App\Media メディア リソース (メディア ストレージにアップロードされたファイル)をデータベースから取得します。 これは、データベースがメディアストレージとして設定されている場合は常に使用されます。

\Magento\Core\App\Media は、構成されたデータベース・ストレージ内でメディア・ファイルを検索し、pub/static ディレクトリに書き込んでから、その内容を返します。 エラーの場合、内容を含まない HTTP 404 (見つかりません)ステータスコードがヘッダーに返されます。

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c