PHP 5.5 から PHP 7 へのアプリの移行

ここでは、PHP 5.5 アプリケーションを App Engine スタンダード環境の PHP 7.2 または PHP 7.3(ベータ版)ランタイムに移行する方法について説明します。

PHP 5.5 と PHP 7 の互換性に関する問題

公式の PHP ドキュメントで PHP の各バージョンからの移行に関する情報が提供されています。

app.yaml ファイルを移行する

アプリケーションのすべてのルーティングを処理するフロント コントローラを配置する必要があります。詳細については、アプリケーションの起動をご覧ください。

PHP 7.2 および PHP 7.3 ランタイムでは、script ハンドラ要素をカスタマイズできません。すべてのトラフィックが entrypoint コマンドを使用して提供されるため、唯一の有効な値は auto です。静的でない URL のすべてのハンドラで script: auto を指定しないとデプロイは成功しません。

app.yaml 構成ファイルの一部の要素の動作が変更されました。

要素変更タイプ説明
entrypoint追加 必要に応じて、このフィールドでアプリの起動時に実行されるコマンドを指定します
threadsafe非推奨すべてのアプリケーションがスレッドセーフ(つまり、インスタンスが複数のリクエストを同時に処理できる)とみなされます。
api_version非推奨以前は必須でしたが、PHP 7.2 および PHP 7.3 ランタイムでは必要ありません。
application_readable非推奨
builtins非推奨
libraries非推奨composer.json メタデータ ファイルを使用してサードパーティの任意の依存関係をインストールできます。
handlers修正
  • script フィールドは、必要に応じて指定します。auto 以外の値は指定できません。リクエストが特定のルートに当たったときにスクリプトを実行するには、アプリ内ルーティングでウェブ フレームワーク(LaravelSymfonySlim のようなフレームワーク)を使用します。
  • login フィールドはサポートされていません。ユーザーの管理には、Cloud Identity and Access Management を使用します。

非推奨のフィールドのいずれかを使用すると、アプリのデプロイ時にエラーが発生します。

詳細については、app.yaml リファレンスをご覧ください。

緩和されたランタイムの制限

PHP 7.2 および PHP 7.3 ランタイムでは、PHP 5.5 ランタイムに比べて制限が少なくなっています。

詳細については、PHP 7 ランタイム環境のドキュメントをご覧ください。

App Engine の PHP SDK から移行する

PHP 7.2 および PHP 7.3 ランタイムは、App Engine 固有の API をサポートしていません。これらの API が提供するほとんどの機能は、Cloud SDK クライアント ライブラリで提供されるようになりました。

  • App Engine の Blobstore API サポートは提供されていません。Cloud Storage を利用するには google/cloud-storage クライアント ライブラリを使います。ご利用にあたっては、Cloud Storage クライアント ライブラリのページをご覧ください。
  • Cloud Datastore にアクセスするには、google/cloud-datastore クライアント ライブラリを使います。ご利用にあたっては、Cloud Datastore クライアント ライブラリのページをご覧ください。
  • App Engine の Images API サポートは提供されていません。Cloud Storage を利用するには google/cloud-storage クライアント ライブラリを使います。ご利用にあたっては、Cloud Storage クライアント ライブラリのページをご覧ください。
  • App Engine の Mail API サポートは提供されていません。メールの送信には、SendGrid、Mailgun、Mailjet などのサードパーティのメール プロバイダを使用する必要があります。これらのサービスはいずれも、アプリケーションからメールを送信するための API を提供しています。App Engine アプリケーションに Mailjet と SendGrid を統合する場合は、Mailjet でのメール送信SendGrid でのール送信をご覧ください。
  • App Engine Memcache サポートは提供されていませんが、Redis Labs Cloud を使用して同様の機能を実現できます。
  • App Engine の Modules APIgoogle/apiclient ライブラリを使用してアクセスできますが、公式の SDK には含まれていません。情報の取得や、アプリケーションで実行中のサービスの変更は、環境変数と App Engine Admin API を使用して行ってください。

    サービスに関する情報 アクセス方法
    現在のサービス名 GAE_SERVICE 環境変数
    現在のサービス バージョン GAE_VERSION 環境変数
    現在のインスタンス ID GAE_INSTANCE 環境変数
    デフォルトのホスト名 Admin API の apps.get メソッド
    サービスのリスト Admin API の apps.services.list メソッド
    特定のサービスのバージョンのリスト Admin API の apps.services.versions.list メソッド
    特定のサービスのデフォルト バージョン(トラフィック分割を含む) Admin API の apps.services.get メソッド
    特定のバージョンで実行中インスタンスのリスト Admin API の apps.services.versions.instances.list メソッド
  • App Engine の Search API サポートは提供されていません。Compute Engine 上で ElasticSearch のような全文検索データベースをホストし、サービスからアクセスできます。

  • App Engine の Task Queue APICloud Tasks に置き換えられます。PHP 7 からタスクをキューに追加するには Cloud Tasks REST API、RPC API、または PHP クライアント ライブラリを使います。PHP 7.2 または PHP 7.3 用の App Engine 標準サービスを push ターゲットとして使うことができます。push キューのみサポートされています。

  • Users API サポートは提供されていません。

アプリケーションをローカルで実行する

PHP 7.2 および PHP 7.3 ランタイムでは dev_appserver.py がサポートされていません。アプリケーションをテストしてローカルで実行するには、PHP 7.2 または PHP 7.3 をダウンロードしてインストールし、ウェブサーバーをセットアップする必要があります。

たとえば、次のコマンドを実行して HTTP サーバーを起動します。

php -S localhost:8080

その後、ウェブブラウザで http://localhost:8080 にアクセスしてアプリケーションを表示します。

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

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

App Engine スタンダード環境での PHP 7.2 に関するドキュメント