GAE/SE (Google App Engine Standard Environment) のPHP 5.5環境で動いていたアプリケーションを最近発表されたPHP 7.2環境に引っ越そうとしたところ、それまで動いていたapp.yaml
の書き方では動かなくなっていた、という話題です。
第一世代のGAE/SE環境では、下記のようなapp.yaml
が一般的だったと記憶しています。
runtime: php55
handlers:
- url: /js
static_dir: js
- url: /css
static_dir: css
- url: /
script: php/index.php
第二世代のGAE/SE環境では全リクエストをフロントコントローラで受けるモデルが前提になっており、デフォルト設定では全リクエストをindex.php
で受けるようになっています。
下記のようにentrypoint
を設定すればフロントコントローラのパスが変更できます。
runtime: php72
entrypoint: serve php/index.php
ところで以前のように静的ファイルのパスをhandlers
で指定しようとするとentrypoint
の設定が無視されてしまって意外とハマります(私はハマりました)。
公式ドキュメント「app.yaml Configuration File」に書いてある通り、下記のように記述すればhandlers
とentrypoint
を共存させることができます。
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」)。