PHP 用 Error Reporting の設定

ライブラリの有効化

は、

PHP 用 Stackdriver Error Reporting ライブラリを使用すると、PHP アプリケーションから Stackdriver Error Reporting にエラーレポートを送信できます。

Error Reporting は、App EngineCompute EngineGoogle Kubernetes Engine などの一部の Google Cloud Platform プロダクトに統合されています。Error Reporting は、それらのプロダクトで実行中のアプリケーションによって Stackdriver Logging に記録されたエラーを表示します。詳細については、Google Cloud Platform での実行をご覧ください。

Stackdriver Logging を使用してエラーデータを Error Reporting に送信することもできます。データのフォーマット要件については、Stackdriver Logging でのエラー メッセージのフォーマットをご覧ください。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Google Cloud Platform プロジェクトを選択または作成します。

    [リソースの管理] ページに移動

  3. Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。

    課金を有効にする方法について

  4. Error Reporting API を有効にします。

    APIを有効にする

クライアント ライブラリのインストール

PHP 用 Stackdriver Error Reporting ライブラリを使用すると、ほとんどの場所で動作している PHP アプリケーションから報告されるエラーをモニタリングして表示できます。

インストールの詳細については、PHP 用 Stackdriver Error Reporting ライブラリのドキュメントをご覧ください。公開バグトラッカーを使用して問題を報告することもできます。

クライアント ライブラリの構成

PHP 用 Stackdriver Error Reporting ライブラリの動作はカスタマイズできます。使用可能な構成オプションの一覧については、ライブラリの構成をご覧ください。

エラーの報告

1. 次のコマンドを使用して、クラウド ライブラリをインストールします。

$ composer require google/cloud-logging google/cloud-error-reporting
1. php.ini に次の行を追加します。
auto_prepend_file='/project-dir/vendor/google/cloud-error-reporting/src/prepend.php'
1. GOOGLE_CLOUD_PROJECT 環境変数をプロジェクト名に設定します。

このプリペンド ファイルは、エラーを自動的に Stackdriver Error Reporting に送信する例外ハンドラとエラーハンドラをインストールします。

Google Cloud Platform での実行

PHP 用 Stackdriver Error Reporting ライブラリを使用するには、Cloud IAM Error Reporting 書き込み役割が必要です。ほとんどの Google Cloud Platform コンピューティング プラットフォームでは、デフォルトでこの役割が付与されます。

App Engine フレキシブル環境

App Engine は、デフォルトで Error Reporting 書き込み役割を付与します。

PHP 用 Stackdriver Error Reporting ライブラリは、明示的に認証情報を提示しなくても使用できます。

App Engine フレキシブル環境で Stackdriver Error Reporting を有効にするには、次の手順に従います。

  1. 次のコマンドを使用して必要なライブラリをインストールします。

    $ composer require google/cloud-logging google/cloud-error-reporting

  2. app.yamlruntime_config セクションに次の行を追加します。

enable_stackdriver_integration: true

その後、ライブラリが Stackdriver Error Reporting 用に、すべてのエラーと捕捉されなかった例外を自動的に収集します。独自の例外ハンドラをインストールするウェブ フレームワークを使用している場合は、フレームワークの統合のセクションをご覧ください。

GKE

GKE では、次のコマンド例に示すように、クラスタの作成時に cloud-platform アクセス スコープを追加する必要があります。

gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/cloud-platform

Compute Engine

Compute Engine VM インスタンスを使用する場合は、各インスタンスに cloud-platform アクセス スコープを追加します。Google Cloud Platform Console で新しいインスタンスを作成する場合は、[インスタンスの作成] パネルの [ID と API へのアクセス] セクションで行うことができます。Compute Engine のデフォルト サービス アカウントや別のサービス アカウントを使用して、[ID と API へのアクセス] セクションの [すべての Cloud API に完全アクセス権を許可] を選択します。どのサービス アカウントを選択する場合でも、GCP Console の [IAM と管理] セクションで、そのアカウントに Error Reporting 書き込み役割が付与されていることを確認してください。

ローカルやその他の場所での実行

Google Cloud Platform の外部で PHP 用 Stackdriver Error Reporting ライブラリを使用するには、GCP プロジェクト ID と該当するサービス アカウント認証情報を PHP 用 Stackdriver Error Reporting ライブラリに直接指定する必要があります。この要件が適用されるのは、独自のワークステーション、データセンターのパソコン、または他のクラウド プロバイダの VM インスタンスでライブラリを実行する場合です。詳細については、サービス アカウントの認証情報を手動で取得して指定するをご覧ください。

エラーレポートの表示

デプロイ後は、GCP Console の Error Reporting ダッシュボードでエラーレポートを表示できます。

Error Reporting ダッシュボードに移動

詳細については、エラーの表示をご覧ください。

フレームワークの統合

一部のウェブ フレームワークは例外ハンドラをオーバーライドします。Laravel と Symfony で Error Reporting を有効にする例を以下に示します。他のフレームワークでは、例外ハンドラとして Google\Cloud\ErrorReporting\Bootstrap::exceptionHandler を使用できます。

Laravel

app/Exceptions/Handler.php ファイル内の report 関数を次のように編集します。

public function report(Exception $exception)
{
    if (isset($_SERVER['GAE_SERVICE'])) {
        // Ensure Stackdriver is initialized and handle the exception
        Bootstrap::init();
        Bootstrap::exceptionHandler($exception);
    } else {
        parent::report($exception);
    }
}

また、ファイルの先頭に 1 行で use ステートメントを追加する必要もあります。

use Google\Cloud\ErrorReporting\Bootstrap;

Symfony

src/AppBundle/EventSubscriber/ExceptionSubscriber.php という名前のファイルを新しく作成し、次の内容を含めます。

// src/AppBundle/EventSubscriber/ExceptionSubscriber.php
namespace AppBundle\EventSubscriber;

use Google\Cloud\ErrorReporting\Bootstrap;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
use Symfony\Component\HttpKernel\KernelEvents;

class ExceptionSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        // return the subscribed events, their methods and priorities
        return [KernelEvents::EXCEPTION => [
            ['logException', 0]
        ]];
    }

    public function logException(GetResponseForExceptionEvent $event)
    {
        $exception = $event->getException();
        Bootstrap::exceptionHandler($exception);
    }
}
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Stackdriver Error Reporting
ご不明な点がありましたら、Google のサポートページをご覧ください。