ServBayローカル開発環境でFuelPHPプロジェクトを作成・実行する方法
FuelPHPとは?
FuelPHPは、最新のWebアプリケーション開発向けに設計された柔軟かつモジュール型のPHPフレームワークです。階層型モデル・ビュー・コントローラー(HMVC:Hierarchical Model-View-Controller)設計パターンに従い、迅速かつ高品質なWebアプリ開発を支援する機能やツールを豊富に備えています。卓越した柔軟性や高性能、拡張の容易さが評価されており、多くのPHP開発者に選ばれています。
FuelPHPの主な特徴とメリット
- HMVCアーキテクチャ:階層型MVCパターンを採用し、コードの整理・再利用・モジュール化開発を促進。大規模・複雑プロジェクトでも管理しやすい設計です。
- 高いパフォーマンス:パフォーマンス向上を考慮して設計されており、高速な処理とリソース効率が大きな強みです。高負荷にも十分対応可能。
- 拡張性の高さ:強力な拡張メカニズムが提供され、サードパーティのライブラリや独自機能の追加も容易です。プロジェクトの多様な要件に柔軟に対応できます。
- 高セキュリティ:自動入力検証や出力フィルタ(XSS対策)、CSRF防御、SQLインジェクション対策など、様々なセキュリティ機能を標準搭載。安全なアプリ開発を実現します。
- 活発なコミュニティ:多くの開発者が参加するコミュニティがあり、サポートや豊富なサードパーティリソースを得やすい環境です。
これらの特徴により、FuelPHPはスピーディで安全、保守性に優れたWebアプリを、個人の小規模プロジェクトから大規模な企業向けまで幅広く開発できます。
ServBayを使ったFuelPHP開発環境の構築
ServBayは、Web開発者向けに設計されたオールインワンのローカル開発環境です。PHP・Caddy/Nginx/Apache・MySQL/PostgreSQL/MongoDB・Redisなど、多種多様なサービスとツールをインストール不要で利用できます。FuelPHPプロジェクトもServBayさえあれば、面倒な依存関係の設定作業無しで始められます。
このガイドでは、ServBayのPHP環境、Caddy(Webサーバー)、データベースやキャッシュサービスを活用し、FuelPHPプロジェクトを作成・起動する流れを解説します。ServBayのWebサイト管理機能でバーチャルホストを設定し、すぐにプロジェクトへアクセス・テストできる手順を紹介します。
必要な準備
始める前に、以下の条件をご確認ください。
- macOSにServBayをインストールし、正常に起動している。
- ServBayのPHP環境が有効になっている(標準で有効)。
- MySQLなどのデータベースサービス、RedisやMemcachedなどのキャッシュサービスがServBayで起動済み。
- ServBayにはComposerが同梱されているので、追加インストールは不要。
FuelPHPプロジェクトの作成
推奨プロジェクト保存場所
ServBayは、Webサイトのプロジェクトを/Applications/ServBay/www
ディレクトリにまとめることを推奨しています。管理や設定がしやすいためで、このガイドでもこのディレクトリを例に説明します。
Webサイトルートディレクトリへ移動
ターミナルを開いて、ServBay推奨のWebサイトルートに移動します:
bashcd /Applications/ServBay/www
1プロジェクトディレクトリの作成
FuelPHP用の新規ディレクトリを作成し、移動します:
bashmkdir servbay-fuelphp-app cd servbay-fuelphp-app
1
2ComposerでFuelPHPプロジェクトを作成
プロジェクトディレクトリで、Composerを使いFuelPHPをダウンロード・初期化します。
.
はカレントディレクトリへのインストールを意味します:bashcomposer create-project fuel/fuel .
1ComposerがFuelPHPおよび依存パッケージ一式を、自動的に
servbay-fuelphp-app
ディレクトリにインストールします。
Webサーバー構成(ServBay Webサイト機能の使用)
FuelPHPプロジェクトをブラウザから利用するには、ServBayのWebサイト機能でバーチャルホスト(仮想ドメイン)を設定します。
- ServBayのメイン画面を開く。
- サイドバーでWebサイトメニューを選択。
- 右上のWebサイト追加ボタンをクリック。
- 表示される設定ウィンドウで、以下を入力:
- 名前:分かりやすいサイト名(例:
My First FuelPHP Dev Site
) - ドメイン:ローカル開発用ドメイン(例:
servbay-fuelphp-test.local
)。このドメインはServBayがローカルへ自動で解決。 - サイト種類:
PHP
を選択。 - PHPバージョン:希望バージョン(例:
8.3
) - サイトルートディレクトリ:FuelPHPの公開入口、
public/index.php
があるpublic
ディレクトリを指定:/Applications/ServBay/www/servbay-fuelphp-app/public
- 名前:分かりやすいサイト名(例:
- 追加ボタンで設定を保存。
ServBayが自動でCaddyの設定を更新し、サービスを再読み込み。新規ドメインが有効化されます。
より詳細な手順は、ServBay公式ドキュメント「最初のWebサイト追加」をご参照ください。
FuelPHPプロジェクトのサービス接続設定
FuelPHPプロジェクトでは、DBやキャッシュなどのサービスへの接続設定が必要です。
データベース設定
FuelPHPのDB設定はfuel/app/config/development/db.php
で行います。以下はServBayの標準MySQLを使う場合の例です:
php
<?php
/**
* 開発用DB設定。グローバル設定とマージされます。
*/
return [
'default' => [
'connection' => [
'dsn' => 'mysql:host=localhost;dbname=fuel_dev', // fuel_devデータベースが事前作成されていること
'username' => 'root', // ServBay MySQLの標準ユーザー
'password' => 'root', // ServBay MySQLの標準パスワード(ローカル開発用のみ!)
],
'identifier' => '`', // MySQLでは識別子にバッククォートが必要
],
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
注意:
- ServBayのDB管理ツール(phpMyAdminやAdminerなど)で事前に
fuel_dev
データベースを作成してください。標準ユーザーroot
のパスワードもroot
ですが、これはローカル開発専用です。 'identifier' => '
'`はMySQLで必要で、テーブル名やカラム名の正しい引用のために設定します。
キャッシュ設定(Memcached・Redis)
FuelPHPは各種キャッシュドライバ対応。cache設定はfuel/app/config/cache.php
で行います。事前に、Memcached/RedisサービスがServBayで起動しているかご確認ください。
Memcached設定(fuel/app/config/cache.php
):
Memcachedを標準キャッシュとする場合:
php
<?php
return [
'driver' => 'memcached', // キャッシュドライバにmemcachedを指定
'memcached' => [
'cache_id' => 'fuel', // キャッシュID
'servers' => [
'default' => [
'host' => '127.0.0.1', // Memcached標準接続先
'port' => 11211, // 標準ポート
'weight' => 100,
],
],
'compression' => false, // 圧縮を有効にするか
],
// ... その他のキャッシュドライバ設定
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ServBayのPHPは基本的にMemcached拡張が導入済みです。
Redis設定(fuel/app/config/redis.php
):
Redisを使う場合、redis.php
設定ファイルがあります:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // 標準Redis接続先
'port' => 6379, // 標準ポート
'database' => 0, // データベース番号
],
// 複数接続の設定も可能
];
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
ServBayのPHPもRedis拡張が導入済みです。
データベース・キャッシュサービスの操作例
ここでは、FuelPHPでDBやキャッシュサービスとどのように連携するかサンプルコードを追加します。
データベーステーブルの準備(FuelPHP Migrations)
FuelPHPのOilツールでDBマイグレーション管理ができます。これはDB構造管理(バージョン管理)の仕組みです。
マイグレーションファイルの作成
プロジェクトルート(
servbay-fuelphp-app
)で、Oilツールによりusers
テーブル用のマイグレーションファイルを作成します:bashphp oil generate migration create_users_table
1これにより
fuel/app/migrations
ディレクトリへタイムスタンプ入りファイルが生成されます。マイグレーション内容の編集
生成されたファイル(例:
fuel/app/migrations/xxxxxxxxxxxx_create_users_table.php
)で、up()
メソッドでテーブル構造を、down()
でロールバック操作を記述:php<?php namespace Fuel\Migrations; use Fuel\Core\DBUtil; class Create_users_table { public function up() { // usersテーブルの作成 DBUtil::create_table('users', [ 'id' => ['type' => 'int', 'constraint' => 11, 'auto_increment' => true], 'name' => ['type' => 'varchar', 'constraint' => 100], 'email' => ['type' => 'varchar', 'constraint' => 100, 'unique' => true], ], ['id'], true, 'InnoDB', 'utf8mb4_unicode_ci'); // 主キー・インデックス・エンジン・文字コード設定 } public function down() { // usersテーブルの削除(ロールバック) DBUtil::drop_table('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23マイグレーションの実行
プロジェクトルート(
servbay-fuelphp-app
)で、Oilツールを使ってマイグレーション実行:bashphp oil refine migrate
1成功すれば、
fuel_dev
データベースにusers
テーブルが作成されます。
サンプルコントローラーコードの追加
fuel/app/classes/controller/welcome.php
ファイルを編集し、DB・キャッシュ操作を確認できるアクションを追加します:
php
<?php
use Fuel\Core\Controller;
use Fuel\Core\Response;
use Fuel\Core\Cache;
use Fuel\Core\DB; // DBファサードのインポート
use Fuel\Core\Redis; // Redisファサードのインポート
class Controller_Welcome extends Controller
{
// デフォルトのトップページ
public function action_index()
{
return Response::forge('Hello ServBay!');
}
// Memcachedの利用例
public function action_memcached()
{
// キャッシュからデータ取得
$value = Cache::get('servbay_memcached_key');
if ($value === false) {
// 未キャッシュならデータセット
$value = 'Hello Memcached from ServBay!';
Cache::set('servbay_memcached_key', $value, 60); // 60秒キャッシュ
$value .= ' (from cache)';
} else {
$value .= ' (cached)';
}
return Response::forge($value);
}
// Redisの利用例
public function action_redis()
{
// デフォルト接続でRedisインスタンス取得
$redis = \Redis_Db::instance(); // FuelPHP 1.xではRedis_Db::instance()利用
// 複数接続なら\Redis_Db::instance('connection_name')
// Redisにデータセット
$redis->set('servbay_redis_key', 'Hello Redis from ServBay!');
// Redisからデータ取得
$value = $redis->get('servbay_redis_key');
return Response::forge($value);
}
// MySQLへの書き込み例
public function action_mysql_add()
{
try {
// usersテーブルへレコード挿入
$result = DB::insert('users')->set([
'name' => 'ServBay Demo User ' . time(), // 時間で一意性確保
'email' => 'demo_user_' . time() . '@servbay.test',
])->execute(); // 実行で新規ID等が返る
return Response::forge('User added with ID: ' . $result[0]);
} catch (\Database_Exception $e) {
// 重複emailなどDB例外対応
return Response::forge('Error adding user: ' . $e->getMessage(), 500);
}
}
// MySQLからの読み出し例
public function action_mysql()
{
// usersテーブル全件取得
$users = DB::select('id', 'name', 'email')->from('users')->execute()->as_array();
// ユーザーリストをJSON返却
return Response::forge(json_encode($users, JSON_PRETTY_PRINT));
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
補足:
DB
やRedis
ファサード(use Fuel\Core\DB;
,use Fuel\Core\Redis;
)を導入し、直接利用します。- Memcached・Redisへのキーは
servbay_
プレフィックスで競合防止。 - MySQL書き込み例はタイムスタンプ入り+例外処理付きで現実的な内容です。
- FuelPHP 1.xでは
\Redis_Db::instance()
が標準のRedisインスタンス取得方法です。
ルーティング設定
追加したコントローラーアクションにURLからアクセスするため、fuel/app/config/routes.php
でルート設定を行います。既定のController_Welcome
は標準でルーティングされていますが、memcached
, redis
, mysql_add
, mysql
は明示する必要があります。
設定例:
php
<?php
return array(
'_root_' => 'welcome/index', // デフォルトはwelcomeコントローラーindex
'_404_' => 'welcome/404', // 404エラールート
// サンプルアクション用ルート
'memcached' => 'welcome/memcached',
'redis' => 'welcome/redis',
'mysql_add' => 'welcome/mysql_add',
'mysql' => 'welcome/mysql',
// ... その他設定
);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
サイトへのアクセスとテスト
これで、ServBayで設定したローカルドメインhttps://servbay-fuelphp-test.local
からFuelPHPプロジェクトおよび各種サービス連携をテストできます。
- トップページ:
https://servbay-fuelphp-test.local
- 期待出力:
Hello ServBay!
- 期待出力:
- Memcachedテスト:
https://servbay-fuelphp-test.local/memcached
- 初回:
Hello Memcached from ServBay! (from cache)
(キャッシュ正常時) - 再アクセス:
Hello Memcached from ServBay! (cached)
(キャッシュ正常+未期限切時)
- 初回:
- Redisテスト:
https://servbay-fuelphp-test.local/redis
- 期待出力:
Hello Redis from ServBay!
(Redis正常時)
- 期待出力:
- MySQLへユーザー追加:
https://servbay-fuelphp-test.local/mysql_add
- 期待出力:
User added with ID: [新規ID]
(MySQL・DB・テーブル正常時)
- 期待出力:
- MySQLユーザー一覧取得:
https://servbay-fuelphp-test.local/mysql
- 期待出力: JSON配列(usersテーブル全件)(MySQL・テーブル正常+データがあれば)
HTTPSについて: ServBayはローカルサイト向けSSL証明書を自動発行し、ServBay User CAやPublic CAで信頼できます。ブラウザが証明書未信頼と警告する場合は、システムでServBay CA証明書を信頼済みにしてください。
注意点
- ServBayのメイン画面で、PHPバージョンやCaddy(またはNginx/Apache)、MySQL、Redis、Memcached等の各サービスが稼働中であることを必ず確認してください。
- ServBayのDB管理ツールで、
fuel_dev
データベースを手動作成しましょう(またはdb.php
で既存DB指定)。FuelPHPのマイグレーションコマンドoil refine migrate
は指定DBにテーブル作成はしますが、データベース自体は自動作成されません。 - FuelPHPの公開入口は
public/index.php
です。ServBayのWebサイト設定でサイトルートは必ずpublic
ディレクトリを指定してください。
まとめ
ServBayを活用すれば、macOS上でFuelPHPプロジェクトの開発環境構築から各種サービス連携、テストまで非常にスムーズに行えます。本ガイドではFuelPHPプロジェクトの作成・Webサイト設定・DB/キャッシュサービスの接続・サンプルコードによる検証まで手順を網羅しました。ServBayが各種サービスを統合し、煩雑な設定作業を簡略化することで、開発効率が大幅に向上します。
このガイドが、ServBayでのFuelPHP開発を始める皆様の一助となれば幸いです!