1サイトで複数のFuelPHPを使うときのメモ

ひとつのWebにWordpressや複数のFuelPHPを共存させるときのまとめ

作成日:2018-08-10, 更新日:2018-08-10

基本のフォルダ構成

最初にフォルダ構成が決まっているならいいんだけど、後から後へとコンテンツを追加させなくちゃいけないコトがある

▼以下で、使う各フォルダたち

フォルダ名 内容
/fuelphp fuelphpのプログラム本体(appフォルダたち)
/fuelhtml 「http://example.com/fuelhtml」でアクセスしたときに表示するフォルダ
/fuelhtml2 「http://example.com/fuelhtml2」でアクセスしたときに表示するフォルダ
/index.html 静的HTML
/wp wordpressのフォルダ
/wp-admin wordpressで使われているフォルダ
/wp-content wordpressで使われているフォルダ

▼前提条件
・「/fuelphp」は共有(「/fuelhtml/index.php」も「/fuelhtml2/index.php」も「/fuelphp」を使うというルール)
・「/public_html」の中に「fuelphpのプログラム本体(appフォルダたち)」を置く(※サーバによっては外に置けないコトがあるため)
・「/fuelphp」は基本「/fuelhtml」の中に入れない

「既存サイト:FuelPHP」のみ

今回だけ「/public_html」の外にfuelphpの本体を置く場合の構成を書いておく。

▼「/public_html」の外にfuelphpの本体を置く場合

├/fuelphp
│├/app
│├/core
│└ ~略~
├/public_html
│├/assets
│├ ~略~
│└index.php

▼「public_html」の中にfuelphpの本体を置く場合

├/public_html
│├/assets
│├ ~略~
│├index.php
│├/fuelphp
││├/app
││├/core
││└ ~略~

「既存サイト:FuelPHP」に「HTMLファイル」を追加

▼「/public_html」配下

├/assets
├ ~略~
├index.php
├〇〇〇.html
├/fuelphp
│├/app
│├/core
│└ ~略~

※「/fuelphp」の「.htaccess」のおかげで「/〇〇〇.html」を読み込んでくれる

「既存サイト:HTML」に「FuelPHP」を追加

▼「/public_html」配下
├/index.html
├ ~略~
├/fuelhtml
│├/assets
│└index.php
├/fuelphp
│├/app
││├/core
││└ ~略~

「既存サイト:FuelPHP」に「FuelPHP」を追加

▼「/public_html」配下
├/assets
├ ~略~
├index.php
├/fuelphp
│├/app
│├/core
│└ ~略~
├/fuelhtml2
│├/assets
│├ ~略~
│├index.php

「既存サイト:Wordpress」に「FuelPHP」を追加

▼「/public_html」配下
├/wp-admin
├/wp-content
├ ~略~
├/fuelhtml
│├/assets
│└index.php
├/fuelphp
│├/app
│├/core
│└ ~略~

※wordpressの「.htaccess」のおかげで「/〇〇〇.html」を読み込んでくれる

「既存サイト:HTML+Wordpress」に「FuelPHP」を追加

├/index.html
├ ~略~
├/wp
│├/wp-admin
│├/wp-content
│└ ~略~
├/fuelhtml
│├/assets
│└index.php
├/fuelphp
│├/app
│├/core
│└ ~略~

「既存サイト:HTML+Wordpress」に「FuelPHP」を追加後、さらに「FuelPHP」を追加

├/index.html
├ ~略~
├/wp
│├/wp-admin
│├/wp-content
│└ ~略~
├/fuelhtml
│├/assets
│└index.php
├/fuelhtml2
│├/assets
│└index.php
├/fuelphp
│├/app
│├/core
│└ ~略~

fuelPHPの設定

▼アクセスするFuelPHPのURL
・http://example.co.jp/fuelhtml
・http://example.co.jp/fuelhtml2

▼ベースになる構成:「/public_html」配下

├/index.html
├ ~略~
├/fuelhtml
│├/assets
│└index.php
├/fuelhtml2
│├/assets
│└index.php
├/fuelphp
│├/app
│├/core
│└ ~略~

▼上述をベースにした場合、修正対象フォルダ
・/fuelhtml
・/fuelhtml2
・/fuelphp

色々とあるだろうけど、省略できる部分も記載するにようにしておく。

「fuelphp/app/classes/controller」内の下準備

「/fuelhtml」「/fuelhtml2」のそれぞれの「controller」を準備しておく
・「fuelphp/app/classes/controller/fuelhtml」
・「fuelphp/app/classes/controller/fuelhtml2」
※「fuelphp/app/classes/controller1」「fuelphp/app/classes/controller2」だと面倒なので「controller」内でそれぞれのフォルダを用意しておく。

「fuelphp/app/config/routes.php」を読み込ませる準備

▼「/fuelhtml/index.php」で「routes.php」に代わる別ファイルを指定

define('PATH_CONFIG_ROUTES', 'routes_1.php');

▼「/fuelhtml2/index.php」で「routes.php」に代わる別ファイルを指定

define('PATH_CONFIG_ROUTES', 'routes_2.php');

「fuelphp/app/config/routes.php」に割り振りの処理を記載

▼「fuelphp/app/config/routes.php」を複製して2ファイル用意
・fuelphp/app/config/routes_1.php
・fuelphp/app/config/routes_2.php

▼「fuelphp/app/config/routes.php」の内容を書換える

<?php
if ( !defined('PATH_CONFIG_ROUTES') ) {
  $path = 'routes_1.php';
}
else {
  $path = PATH_CONFIG_ROUTES;
}
return include APPPATH . 'config/' . $path;

※「/fuelhtml/index.php」と「/fuelhtml2/index.php」で設定した「PATH_CONFIG_ROUTES」を元に割り振る。

▼「fuelphp/app/config/routes_1.php」の内容

<?php
return array(
  '_root_' => 'fuelhtml/top/index',  // The default route
  '(:any)' => 'fuelhtml/$1',
);

▼「fuelphp/app/config/routes_2.php」の内容

<?php
return array(
  '_root_' => 'fuelhtml2/top/index',  // The default route
  '(:any)' => 'fuelhtml2/$1',
);

_root_や_404_、他は必要に応じて追加するなりする。

「'(:any)' => 'fuelhtml/$1'」「'(:any)' => 'fuelhtml2/$1'」について

・「http://example.co.jp/fuelhtml/〇〇〇」はすべて「controller/fuelhtml」内を読み込ませる
・「http://example.co.jp/fuelhtml2/〇〇〇」はすべて「controller/fuelhtml2」内を読み込ませる
という設定。

「http://example.co.jp/fuelhtml/fuelhtml2/XXXX」でアクセスしたとき
「'(:any)' => 'fuelhtml/$1'」の設定が・・・
・無い→「controller/fuelhtml2/XXXX.php」を読み込む。
・ある→「controller/fuelhtml/fuelhtml2/XXXX.php」内を読み込む→無ければ、失敗:404に飛ばされる

セッション

「/fuelhtml」でログイン→「/fuelhtml2」でもログイン状態が続く→これがOKなら、設定不要。

▼「fuelphp/app/config/session.php」を修正

if ( !defined('PATH_CONFIG_ROUTES') ) {
  $iniChar = '';
}
else {
  $iniChar = str_replace('.php', '', PATH_CONFIG_ROUTES);
}

~略~

  'cookie' => array(
    'cookie_name' => $iniChar.'fuelcid', // name of the session cookie for cookie based sessions
  ~以下、同様(使うものだけ指定すればいいけど、考えるのが面倒なら全部指定)~
  
~以下、略~

注意

\Uri::create()の内容

・「/fuelhtml」で「\Uri::create(〇〇〇)」→「http://example/fuelhtml/〇〇〇」
・「/fuelhtml2」で「\Uri::create(〇〇〇)」→「http://example/fuelhtml2/〇〇〇」

「/fuelhtml」で「/fuelhtml2」のURLが欲しい場合は別途考える。

▼絶対PATHにする

<a href="/fuelhtml2/〇〇〇">

▼ルートのURLを別途指定+PATH指定

$baseUrl = str_replace('/fuelhtml', '', \Uri::create());
$url = '<a href="' . $baseUrl . '/fuelhtml2/〇〇〇">'

関連項目

FuelPHP 共通部分をパッケージ化して使い回す
FuelPHPを一つのサイトで複数使いたい
一つのサイトでFuelPHPを複数使う(簡略版)
FuelPHPでサービス実装後に別サービス追加