【CakePHP2系】初期設定

CakePHP2系の初期設定をメモ。
環境はVagrantで立ち上げたCentOSにApacheやらMySQLを入れたもの。

#CakePHPとは？

PHPでウェブアプリケーションを作成する為のフレームワーク。
他にもPHPのフレームワークを挙げると、「Laravel」、「Zend Framework」、「Symfony」、「Codeigniter」等が存在し、その中でも、主流であるのが「CakePHP」である。
最近はLaravelも人気になりつつあるらしいので機会があれば触ってみたい。

CakePHPは現在3系が最新のバージョンだが、今回は2系を取り扱っていく。


- <a href="https://cakephp.org/">CakePHP公式
- <a href="http://book.cakephp.org/2.0/ja/index.html">CakePHP2.X Cookbook


#インストール

今回は2016年12月現在、2系の最新バージョンを<a href="https://github.com/cakephp/cakephp/tree/2.9.3">GitHub</a>よりインストールする。

Apacheのデフォルトのドキュメントルートである`/var/www/html`に移動して

`$ git clone https://github.com/cakephp/cakephp.git -b 2.x`

`-b 2.x` でブランチを指定しないと3系の最新バージョンがcloneされてしまうので注意。

クローンが成功するとcakephpというディレクトリができる。
gitがわからない人場合はzipを落として解凍。

#エラーエラーエラー

さっそくアクセスしてみるとエラーが出る。

```
Warning: _cake_core_ cache was unable to write 'cake_dev_ja' to File cache in /var/www/html/cakephp/lib/Cake/Cache/Cache.php on line 328

Warning: /var/www/html/cakephp/app/tmp/cache/persistent/ is not writable in /var/www/html/cakephp/lib/Cake/Cache/Engine/FileEngine.php on line 385
```

インストールしたてほやほやのままではエラーが出てしまう。
キャッシュが書き込めんがなとのこと。

`cakephp/app/tmp`以下のファイルのパーミッションを777に変更

`$ chmod -R 777 cakephp/app/tmp`

これで「CakePHP: the rapid development php framework」等と記載されたページにアクセスできる。

アクセスできない場合は、php.iniのタイムゾーンの設定などを確認。

アクセスでき、色々とテキストは表示されるがCSSが読み込めていない場合は

httpd.conf ファイルをいじる

```ruby:/etc/httpd/conf/httpd.conf
<Directory "/var/www/html">

    AllowOverride All #デフォルトだとNoneなのでAllに変更

</Directory>
```

Apacheを再読み込み＆再起動してやる

`$ sudo service httpd reload`
`$ sudo service httpd restart`

これでスタイルが適用され、とりあえずはインストールからのスタートページの表示が完了。

![キャプチャ214214.PNG](https://qiita-image-store.s3.amazonaws.com/0/151404/73f12a44-aeff-862a-9919-fbd0f4110eba.png)

#残ってるエラーを解決していく
まだいくつかエラーが表示されているので１つずつ解決していく。

- Security.salt の変更
- Security.cipherSeed の変更
- データベースの設定
- DebugKit のインストール

##Security.salt, Security.cipherSeed の変更

`Notice (1024): Please change the value of 'Security.salt' in APP/Config/core.php to a salt value specific to your application. [CORE/Cake/Utility/Debugger.php, line 839]`

`Notice (1024): Please change the value of 'Security.cipherSeed' in APP/Config/core.php to a numeric (digits only) seed value specific to your application. [CORE/Cake/Utility/Debugger.php, line 843]
Your version of PHP is 5.2.8 or higher.`

といったエラーが表示されていると思う。
書いてある通り、Security.salt, Security.cipherSeed の値を変更してあげれば良い。
これらの値はハッシュ化やら暗号化やらに使用される。

`cakephp/app/Config/core.php` の228行目と233行目にそれぞれあると思うので
文字列を適当な値に変更する。
適当で構わないのだが、<a href="http://henkan.jp/cakephp/salt">Security.salt 生成ツール</a>というものがあったのでこちらを利用し、生成されたランダムな文字列貼り付ける。

```php:cakephp/app/Config/core.php
/**
 * A random string used in security hashing methods.
 */
	Configure::write('Security.salt', '生成されたランダムな文字列');

/**
 * A random numeric string (digits only) used to encrypt/decrypt strings.
 */
	Configure::write('Security.cipherSeed', '生成されたランダムな文字列');
```

##データベースの設定

次はデータベースの設定。

`Your database configuration file is NOT present.
Rename APP/Config/database.php.default to APP/Config/database.php`

`APP/Config` 内にある database.php.default を database.php という名前に変更しなさいとのこと。

念のため database.php.default はそのまま残しつつ database.php という名前でファイルを複製してあげる。

次はデータベースの情報を database.php に記述して、CakePHPとデータベースを繋いであげる。

database.php 69行目付近の $default の内容を使用するデータベースの情報に変更してあげる。

```php:cakephp/app/Config/database.php
public $default = array(
	'datasource' => 'Database/Mysql',
	'persistent' => false,
	'host' => '使用するホスト名',
	'login' => '使用するユーザー名',
	'password' => '任意のパスワード',
	'database' => '使用するデータベース名',
	'prefix' => '',
	//'encoding' => 'utf8',
);
```

ちなみに少し下にある $test はユニットテストに使用するデータベースの設定なので、今回は変更しない。

##デバッグキットのインストール

`cakephp/app/Plugin` に移動し、<a href="https://github.com/cakephp/debug_kit/tree/2.2">GitHub</a>から2系用のデバッグキットをクローンする。

`$ git clone https://github.com/cakephp/debug_kit -b 2.2`

インストールすると debug_kit というファイルができているので、DebugKit という名前に変更する。

`$ mv debug_kit DebugKit`

`cakephp/app/Config` にある bootstrap.php にデバッグキットを読み込ませる記述を追加する。

```php:cakephp/app/Config/bootstrap.php
CakePlugin::load('DebugKit');
```

最後に、`cakephp/app/Controller` の AppController.php にデバッグキットを使用する記述を追加する。

```php:cakephp/app/Controller/AppController.php
class AppController extends Controller {
    public $components = array('DebugKit.Toolbar'); //追加
}
```

これにて、画面右上にケーキのマークが表示され、クリックするとデバッグキットツールバーが展開されるはずだ。

![キャプチャ21421421.PNG](https://qiita-image-store.s3.amazonaws.com/0/151404/84196b8c-a07d-ba81-c5f0-2fae4dec2e26.png)


初期設定は以上で完了。
基本的なPHPとデータベースの知識があれば問題なく設定できるだろう。