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

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

  • 環境にデプロイされたCommerce バージョンのapp/bootstrap.php ファイルを含めます。 このファイルは、エラー処理、オートローダの初期化、プロファイルオプションの設定、デフォルトのタイムゾーンの設定など、重要な初期化ルーチンを実行します。
  • \Magento\Framework\App\Bootstrap.php のインスタンスを作成します
  • Commerce アプリケーション インスタンスを作成します:\Magento\Framework\AppInterface
  • Commerceを実行

Bootstrap run logic

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

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

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

  3. メンテナンスモードが​ not ​有効になっていることを確認します。有効になっていない場合は終了します。

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

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

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

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

    note info
    INFO
    Commerce アプリケーションがインストールされていて、メンテナンスモードになっていないというアサーションは、\Magento\Framework\App\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);
    

デフォルトの例外処理

bootstrap オブジェクトは、次のように、Commerce アプリケーションが捕捉されない例外を処理する方法を指定します。

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

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

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

HTTP エントリポイント

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

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

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

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

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

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

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

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

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

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

    6. 他のエラーの場合は、HTTP応答503のユーザーフレンドリーな「サービス利用不可」ページを表示し、エラーレポートを生成して、ページにIDを表示します。

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

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

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

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

  • developer モードでは、リソースが要求されるたびに、返されるコンテンツが最新になるように、ファイルのコンテンツが返されます。

  • default モードでは、取得したリソースが公開され、以前に要求されたURLからアクセスできるようになります。

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

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

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

\Magento\Core\App\Mediaは、設定されたデータベースストレージ内のメディアファイルを検索してpub/static ディレクトリに書き込み、その内容を返そうとします。 エラーが発生すると、ヘッダーにHTTP 404 (Not Found)ステータスコードが返され、内容は返されません。

recommendation-more-help
commerce-operations-help-configuration