1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?