8
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

GAE/SE PHP 5.5環境と7.2環境のapp.yamlの違い

GAE/SE (Google App Engine Standard Environment) のPHP 5.5環境で動いていたアプリケーションを最近発表されたPHP 7.2環境に引っ越そうとしたところ、それまで動いていたapp.yamlの書き方では動かなくなっていた、という話題です。

第一世代のGAE/SE環境では、下記のようなapp.yamlが一般的だったと記憶しています。

app.yaml (GAE/SE第一世代)
runtime: php55

handlers:
- url: /js
  static_dir: js
- url: /css
  static_dir: css
- url: /
  script: php/index.php

第二世代のGAE/SE環境では全リクエストをフロントコントローラで受けるモデルが前提になっており、デフォルト設定では全リクエストをindex.phpで受けるようになっています。

下記のようにentrypointを設定すればフロントコントローラのパスが変更できます。

app.yaml (GAE/SE第二世代)
runtime: php72
entrypoint: serve php/index.php

ところで以前のように静的ファイルのパスをhandlersで指定しようとするとentrypointの設定が無視されてしまって意外とハマります(私はハマりました)。

公式ドキュメント「app.yaml Configuration File」に書いてある通り、下記のように記述すればhandlersentrypointを共存させることができます。

app.yaml (GAE/SE第二世代)
runtime: php72
entrypoint: serve php/index.php

handlers:
- url: /js
  static_dir: js
- url: /css
  static_dir: css
- url: /
  script: auto

補足ですが、php72になってscriptにPHPファイルを指定しても動かなくなったので、php55時代にマルチコントローラで書いていたアプリケーションを移植する場合はルーティングするだけのフロントコントローラを書く必要があります(参考:「PHP 7.2 Runtime Environment」)。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
8
Help us understand the problem. What are the problem?