GAE/SE PHP7.2環境で旧来のようなマルチコントローラを実現する

1pt   2018-10-11 18:28
IT技術情報局

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しているだけなんですが、以前と流儀が変わって悩む人もいるかと思ったので記事にしておきます。

Source: php

   ITアンテナトップページへ
情報処理/ITの話題が沢山。