このドキュメントについて
FuelPHPをインストール、Scaffoldingを動作させるまでのステップをかいています。
Step1_環境・インストール
動作環境
MacOSX
PHP 5.4.30 (cli) (built: Jul 29 2014 23:43:29)
FuelPHP 1.7.2
phpとしての設定
php.iniに以下は必須です
sudo cp /private/etc/php.ini.default /private/etc/php.ini
date.timezone = Asia/Tokyo
ディレクトリ構成
~/fuelphp-1.7.2
% tree -L 2 [5:41:29]
.
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── TESTING.md
├── composer.json
├── composer.lock
├── composer.phar
├── docs
│ ├── assets
│ ├── classes
│ ├── contribute.html
│ ├── credits.html
│ ├── favicon.ico
│ ├── favicon.png
│ ├── general
│ ├── index.html
│ ├── installation
│ ├── license.html
│ ├── packages
│ ├── requirements.html
│ ├── templates
│ ├── toc.html
│ └── vendor
├── fuel
│ ├── app
│ ├── core
│ ├── packages
│ └── vendor
├── oil
└── public
├── assets
├── favicon.ico
├── index.php
└── web.config
FuelPHPのインストール
fuel本体
zipダウンロードして解凍
composer
★部分を追記してから、php composer.phar install
"require": {
"php": ">=5.3.3",
"composer/installers": "~1.0",
"monolog/monolog": "1.5.*",★
"fuelphp/upload": "2.0.*",★
"michelf/php-markdown": "1.4.*"★
},
fuel/vendorのパッケージの管理がされていないため。
上記を追記しないと、以下のようなエラーがでます。
Fatal error: Class 'Monolog\Logger' not found in /path/to/fuel/core/classes/log.php
ディレクトリのpermission変更
php oil refine install
Apacheの設定
.htaccessは使わず、httpd.confに.htaccessの内容を転記
DocumentRoot "/Users/hoge/fuelphp-1.7.2/public"
<Directory "/Users/hoge/fuelphp-1.7.2/public">
RewriteEngine on
RewriteCond %{HTTP:X-Requested-With} !^XMLHttpRequest$
RewriteCond %{THE_REQUEST} ^[^/]*/index\.php [NC]
RewriteRule ^index\.php(.*)$ $1 [R=301,NS,L]
# Send request via index.php if not a real file or directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
MySQLの設定
- MySQL:5.6.21
Macにインストールした場合、以下のディレクトリになっているので、エイリアスの設定などは適宜行っておくと便利
%/usr/local/mysql-5.6.21-osx10.8-x86_64/bin/mysql
rootパスワードの設定と、データベース作成
SET PASSWORD FOR root@localhost=PASSWORD('rootpass');
create database fuel_dev
Step2_Scaffolding
oil generateで必要なコントローラ、モデルを作成する。
% php oil g scaffold post title:string summary:string body:text [6:22:05]
Creating migration: /Users/hoge/fuelphp-1.7.2/fuel/app/migrations/001_create_posts.php
Creating model: /Users/hoge/fuelphp-1.7.2/fuel/app/classes/model/post.php
Creating controller: /Users/hoge/fuelphp-1.7.2/fuel/app/classes/controller/post.php
Creating view: /Users/hoge/fuelphp-1.7.2/fuel/app/views/post/index.php
Creating view: /Users/hoge/fuelphp-1.7.2/fuel/app/views/post/view.php
Creating view: /Users/hoge/fuelphp-1.7.2/fuel/app/views/post/create.php
Creating view: /Users/hoge/fuelphp-1.7.2/fuel/app/views/post/edit.php
Creating view: /Users/hoge/fuelphp-1.7.2/fuel/app/views/post/_form.php
Creating view: /Users/hoge/fuelphp-1.7.2/fuel/app/views/template.php
Step3_FuelPHP側の設定
db.php
FuelPHPは環境毎に設定ファイルを準備しています。
http://fuelphp.jp/docs/1.6/general/environments.html
そのため、どの環境の設定ファイルを修正しなければならないか、を間違えないようにしましょう。
\Fuel::DEVELOPMENT
開発環境。
\Fuel::TEST
テスト環境。
\Fuel::STAGING
ステージング環境。
\Fuel::PRODUCTION
本番環境。
環境の設定は、サーバ内の環境変数か「 fuel/app/bootstrap.php」に記述されています。
db.phpではソケットファイルをDSNに指定する。
return array(
'default' => array(
'connection' => array(
'dsn' => 'mysql:host=localhost;dbname=fuel_dev;unix_socket=/tmp/mysql.sock',
'username' => 'root',
'password' => 'rootpass',
),
),
);
指定しなかった場合は以下のエラーとなる
Fuel\Core\Database_Exception [ 2002 ]: SQLSTATE[HY000] [2002] No such file or directory
migrateの実行
マイグレーションとは、データベースのテーブル構造を管理するものです。
マイグレーションを実行することで、作成したモデルをDBに反映させることが可能です。
php oil refine migrate
config.php
ORMパッケージを利用可能にする
'always_load' => array(
/**
* These packages are loaded on Fuel's startup.
* You can specify them in the following manner:
*
* array('auth'); // This will assume the packages are in PKGPATH
*
* // Use this format to specify the path to the package explicitly
* array(
* array('auth' => PKGPATH.'auth/')
* );
*/
'packages' => array(
'orm',
),
crypt.php
crypt.phpをAPPPATH/config/に作成する
The FuelPHP crypto functions require a set of unique and truelly random crypto keys.
These keys are automatically generated and written to the crypto configuration file the first time the application accesses a crypto function.
Please copy the following code into APPPATH/config/crypt.php manually:
<?php
/**
* * Part of the Fuel framework.
* *
* * @package Fuel
* * @version 1.7
* * @author Fuel Development Team
* * @license MIT License
* * @copyright 2010 - 2014 Fuel Development Team
* * @link http://fuelphp.com
* */
return array (
'crypto_key' => 'zVoc60BLg87wC20djQXm4zzE',
'crypto_iv' => 'zAc9uEnqs-NILdAYDchxcfsw',
'crypto_hmac' => 'liUfLMskYyKEbwEJ-sQaIaoU',
);
Step4_確認
おまけ
東洋経済オンラインで「エンジニア夫婦のあるある日記」を連載中です