PHP 5 開発用サーバー

Cloud SDKPHP 5 用 App Engine SDK には、本番環境の App Engine で動作しているアプリケーションをシミュレートするために、ローカルで実行できるローカル開発用サーバー(dev_appserver.py)が同梱されています。シミュレートされた環境では、システム関数や PHP 5 モジュールのインポートに関してサンドボックスの制限がいくつかありますが、リクエストのタイムアウトや割り当てなどには制限がありません。

App Engine 用 SDK のライブラリによって提供される Datastore、Memcache、タスクキューなどのサービスを、ローカル開発用サーバーでローカルに実行してシミュレートすることもできます。アプリケーションが開発用サーバーで動作している場合でも、Google API の HTTP エンドポイントを使用して、本番環境のインフラストラクチャに対するリモート API 呼び出しを実行できます。

ローカル開発用サーバーの実行

アプリの app.yaml 構成ファイルを作成した後、dev_appserver.py コマンドを使用してローカル開発用サーバーを起動し、アプリをローカルで実行できます。

ローカル開発用サーバーを起動するには:

  1. アプリの dev_appserver.py 構成ファイルが格納されているディレクトリから、次のように app.yaml コマンドを実行します。
    (Windows、macOS)

    アプリケーションへのディレクトリパスを指定します。たとえば次のようにします。

    dev_appserver.py [PATH_TO_YOUR_APP]

    また、特定のサービスの構成ファイルを指定することもできます。たとえば次のようにします。

    dev_appserver.py app.yaml

    ポートを変更する場合は、--port オプションを含めます。

    dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]
    Linux / cust. php-cgi

    Linux を使用しているか、php-cgi のカスタム バージョンを使用する場合は、php-cgi へのディレクトリ パスを指定する必要があります。

    1. ローカルマシンに独自のバージョンの App Engine PHP 拡張機能を構築します。
    2. --php_executable_path オプションと --php_gae_extension_path オプションの両方を指定してローカルの開発用サーバーを起動します。
      dev_appserver.py --php_executable_path=[PATH_TO_PHP_CGI] --php_gae_extension_path=[PATH_TO_APPENGINE_EXTENSION] app.yaml

      --php_executable_path は使用している PHP インタプリタがある場所で、--php_gae_extension_path は前のステップで構築した gae_runtime_module.so ファイルがある場所です。

    dev_appserver.py が機能しない場合

    dev_appserver.py コマンド オプションの詳細については、ローカル開発用サーバーのオプションをご覧ください。

  2. ローカル開発用サーバーが起動し、リクエストを待機します。ウェブブラウザで http://localhost:8080/ にアクセスすると、アプリの動作を確認できます。

    --port オプションでカスタムポートを指定した場合は、そのポートにブラウザを開くようにしてください。

ローカル サーバーをコマンドラインから停止するには、次のキーを押します。

  • macOS または Linux: Control-C
  • Windows: Ctrl-Break

アプリケーション ID の指定

メールアドレスのなりすましなどのために、ローカル サーバーでアプリ ID を使用する必要がある場合は、AppIdentityService::getApplicationId 関数を使用します。実行中のアプリのホスト名を取得するには、AppIdentityService::getDefaultVersionHostname 関数を使用します。

アプリケーションのランタイム環境の検出

コードが本番環境で実行されているか、ローカル開発用サーバーで実行されているかを確認するには、SERVER_SOFTWARE 環境変数を確認します。

if (strpos(getenv('SERVER_SOFTWARE'), 'Development') === 0){
  echo 'Local development server';
} else {
  echo 'Production';
}

データの保存

PHP 用 App Engine は、PHP のストリーム API を介して Cloud Storage に対する読み取りと書き込みをサポートします。PHP ストリームの実装をサポートする PHP 関数(fopenfwritefile_get_contents など)を使用する場合、Cloud Storage に対する読み取りと書き込みを行うには Cloud Storage URI(gs://)を指定します。

ローカルの開発用サーバーでは、リクエスト間で維持される一時的なローカル ファイルの読み書きによって、この機能がエミュレートされます。

ローカル Datastore の参照

ローカル開発用サーバーを使用してアプリがローカル Datastore にデータを書き込んでいる場合は、ローカル開発コンソールでそのデータを参照できます。

ローカル Datastore を参照するには:

  1. 開発用サーバーを起動します

  2. ローカル開発コンソールで Datastore Viewer にアクセスします(URL は http://localhost:8000/datastore です)。

  3. ローカル Datastore のコンテンツを参照します。

Users サービスの使用

App Engine には、アプリケーションの認証と承認を簡素化するための Users サービスが用意されています。ローカル開発用サーバーは、独自のログインページとログアウト ページで Google アカウントの動作をシミュレートします。ローカル開発用サーバーで実行している場合、createLoginURL 関数と createLogoutURL 関数はローカル サーバー上の /_ah/login/_ah/logout の URL を返します。

メールの使用

ローカル開発用サーバーは、SMTP サーバーまたはローカルにインストールされた Sendmail を使用して、呼び出しのメールを App Engine のメールサービスに送信できます。

SMTP の使用

SMTP サーバーを使用してメールサポートを有効にするには、次のようにして dev_appserver.py を呼び出します。

dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
    --smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]

ここで、--smtp_host--smtp_port--smtp_user--smtp_password の各オプションには、ご自分の環境の値を指定してください。

Sendmail の使用

Sendmail を使用してメールサポートを有効にするには、次のようにして dev_appserver.py を呼び出します。

dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]

ローカル サーバーは sendmail コマンドを使用し、インストールのデフォルト構成に従ってメールのメッセージを送信します。

URL 取得の使用

アプリケーションが URL 取得 API を使用して HTTP リクエストを送信する場合、ローカル開発用サーバーはデベロッパーのコンピュータからリクエストを直接送信します。プロキシ サーバーを使用してウェブサイトにアクセスしている場合、ローカル サーバーでの URL 取得の動作は本番環境の App Engine と異なることがあります。

XDebug を使用したローカルでのデバッグ

XDebug デバッガとの互換性があるデバッガを使用する場合、xdebug モジュールがインストールされていれば、ローカル開発用サーバーで XDebug を使用できます。

Linux または MacOS 上の開発用サーバーで XDebug を有効にするには:

  1. IDE での接続用の idekey と一緒に XDEBUG_CONFIG 環境変数をエクスポートします。

    export XDEBUG_CONFIG="idekey=netbeans-xdebug remote_host=localhost"
    
  2. --php_remote_debugging=yes で開発用サーバーを起動します。

このページは役立ちましたか?評価をお願いいたします。

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

PHP 5 の App Engine スタンダード環境