GAE/SE PHP 7.2環境では5.5環境とapp.yamlの書き方が変わっており、フロントコントローラ構成が前提になっています(参照:「GAE/SE PHP 5.5環境と7.2環境のapp.yamlの違い - Qiita」)。
しかし、置いたPHPファイルをそのまま実行したいんだ!ということもあるのではないでしょうか。そうした状況のための設定例を紹介します。
.
├── app.yaml
├── index.php
├── php
│ └── *.php
└── static
├── css
│ └── *.css
└── js
└── *.js
app.yaml
runtime: php72
entrypoint: serve index.php
handlers:
- url: /js
static_dir: static/js
- url: /css
static_dir: static/css
- url: /
script: auto
- url: /.*\.php
script: auto
index.php
<?php
$path = @parse_url($_SERVER['REQUEST_URI'])['path'];
if ($path === '/') {
$path = 'index.php';
}
$path = sprintf("%s/php/%s", __DIR__, $path);
if (file_exists($path) && is_file($path)) {
require $path;
} else {
http_response_code(404);
}
上記のディレクトリ構成とファイル内容にした上で、/foo.php
にアクセスすると./php/foo.php
が、/bar.php
にアクセスすると./php/bar.php
がそれぞれ実行されます。
ダミーのフロントコントローラを置いて実体ファイルをrequire
しているだけなんですが、以前と流儀が変わって悩む人もいるかと思ったので記事にしておきます。