FuelPHPでScaffoldingを動作させるまでのStep

# このドキュメントについて

FuelPHPをインストール、Scaffoldingを動作させるまでのステップをかいています。

# Step1_環境・インストール
## 動作環境
MacOSX
PHP 5.4.30 (cli) (built: Jul 29 2014 23:43:29)
FuelPHP 1.7.2

### phpとしての設定
php.iniに以下は必須です

```php

sudo cp /private/etc/php.ini.default /private/etc/php.ini
date.timezone = Asia/Tokyo
```

## ディレクトリ構成

```bash
~/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

```json
    "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変更

```bash
php oil refine install

```

## Apacheの設定

.htaccessは使わず、httpd.confに.htaccessの内容を転記

```apache

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にインストールした場合、以下のディレクトリになっているので、エイリアスの設定などは適宜行っておくと便利

```mysql

%/usr/local/mysql-5.6.21-osx10.8-x86_64/bin/mysql
```

rootパスワードの設定と、データベース作成


```mysql

SET PASSWORD FOR root@localhost=PASSWORD('rootpass');

create database fuel_dev
```

# Step2_Scaffolding

oil generateで必要なコントローラ、モデルを作成する。

```php

% 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に指定する。

```php

return array(
    'default' => array(
        'connection'  => array(
            'dsn'        => 'mysql:host=localhost;dbname=fuel_dev;unix_socket=/tmp/mysql.sock',
            'username'   => 'root',
            'password'   => 'rootpass',
        ),
    ),
);
```

指定しなかった場合は以下のエラーとなる

```bash

Fuel\Core\Database_Exception [ 2002 ]: SQLSTATE[HY000] [2002] No such file or directory
```

## migrateの実行
マイグレーションとは、データベースのテーブル構造を管理するものです。
マイグレーションを実行することで、作成したモデルをDBに反映させることが可能です。

```bash

php oil refine migrate
```

## config.php

ORMパッケージを利用可能にする

```php

   '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

<?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_確認

http://localhost

![スクリーンショット 2014-11-13 5.57.19.png](https://qiita-image-store.s3.amazonaws.com/0/32215/d0d7a336-3152-afe9-9609-b9ab9cf31e60.png)



# おまけ
東洋経済オンラインで「エンジニア夫婦のあるある日記」を連載中です

[エンジニア夫婦のあるある日記](http://toyokeizai.net/search/author?category%5B%5D=TK%3E%E8%A8%98%E4%BA%8B&category%5B%5D=TK%3E%E5%A4%96%E5%A0%B1&author_name=%E3%81%BC%E3%81%B8%E3%81%BC%E3%81%B8)

![あるある日記.jpg](https://qiita-image-store.s3.amazonaws.com/0/32215/14d59814-449c-7cec-c463-59650d3ab1a3.jpeg)