CakePHP

CakePHP - Macに環境を構築する方法まとめ

前回は、CakePHPとは何か?を解説し、PHPでWebシステムを作るにはフレームワークを使うのが便利ということを学びました。代表的なPHPのフレームワークの一つがCakePHPです。今回は、そのCakePHPの開発環境をMacに導入する方法を解説します。

MacにCakePHPの環境を構築する方法まとめ

ローカル環境(Mac OS X + MAMP + MySQL)にCakePHPを導入

私のローカル環境(Mac + MAMP + MySQL)の備忘録です。
MAMPが導入されていることが前提で進めます。

今回のゴール

  • プロジェクト名 test を作成
  • ブラウザで test.com にアクセスすると、CakePHP のトップページにアクセスできること

CakePHPをダウンロード

CakePHPのサイトから最新版(2014年10月10日現在 2.5.5安定版)をダウンロードします。ファイルがZipなので、MAMPのhtdocs(/Applications/MAMP/htdocs)直下に解凍して下さい。今回は、プロジェクト名をtestとするため、testにリネームします。

バーチャルホストとmod_rewriteモジュールの設定

本番環境を想定して、XXX.comなどのアドレスでアクセスできるようバーチャルホストの設定をしていきます。また、そのついでにmod_rewriteというURL書き換えのモジュールを有効にします。CakePHPを使用する上でmod_rwriteを有効にしないと、アクセスするときのURLが長くなってしまいます。

Apacheの設定ファイルである'httpd.conf'の編集

MAMPの仮想環境のApacheを使用するため、設定ファイルの場所は/Applications/MAMP/conf/apach/httd.confとなります。このファイルを編集していきます。
まず、バーチャルホストを有効にするため、

# Virtual hosts
# Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
    ↓
# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

つづいて、mod_rewrite を有効にします。

#LoadModule rewrite_module modules/mod_rewrite.so
    ↓
LoadModule rewrite_module modules/mod_rewrite.so

これにて、'httpd.conf'の設定は以上です。

バーチャルホストの設定ファイルであるhttpd-vhosts.confの編集

バーチャルホストの設定ファイルの場所は/Applications/MAMP/conf/apach/extra/httd-vhosts.confとなります。このファイルに、使用したいバーチャルホストの設定を追記していきます。
具体的には、「test.comというURLでアクセスすると、/Applications/MAMP/htdocs/testにアクセスする」というルールを書いていきます。以下のコードを追加して下さい。

<VirtualHost *:80>
      DocumentRoot "/Applications/MAMP/htdocs/test"
      ServerName test.com
      ErrorLog "logs/test.com-error_log"
      CustomLog "logs/test.com-access_log" common
      Options -Indexes +FollowSymLinks
</VirtualHost>

これにて、バーチャルホストの設定が終わったと思ったら大間違えで、以外な落とし穴がありました。

MacのApacheの設定

MAMPでの設定は以上で終わりなのですが、最後にMac自体の設定を行う必要がありました。いまの設定のまま、test.com にアクセスするとローカルホストを超えて、外部にアクセスを始めてしまいます。
それを止めるために、MAMPが起動していたらローカルのVirtualHostの設定を見てくれとお願いする設定を行う必要があります。
この設定は、/etc/hostsというファイルで行います。隠しファイルなので、vimとかでアクセスすると良いです。

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0 localhost

以上のような設定となっていると思いますが、
そこに、

127.0.0.1 test.com

を追加します。以上で、バーチャルホストの設定が終了です。
まとめると、ブラウザでhttp://test.com/にアクセスすると、/Applications/MAMP/htdocs/test/にアクセスされるように設定しました。

実際にCakePHPにアクセス

設定したファイルを有効にするため、MAMPを再起動して下さい。再起動に成功しましたら、バーチャルホストで設定したhttp://test.com/にアクセスしてみましょう。

MacにCakePHPの環境を構築する方法まとめ2

設定が正しければ、こんな画面が出ると思います。ここからは、ここに表示されているエラーを解決していきます。

セキュリティと暗号化のための文字列の変更

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 846]

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 850]

上記2つは、セキュリティと暗号化のための文字列となります。この2つをデフォルトのままにしておくと、危険なので変更します。場所なのですが、ここからはtestフォルダをルートフォルダとして書いていきます。
つまり、/と書いたら/Applications/MAMP/htdocs/test/と読み替えて下さい。
上記2つの設定ファイルは、/app/Config/core.phpにあります。

MacにCakePHPの環境を構築する方法まとめ2

このファイルを編集していきます。

MacにCakePHPの環境を構築する方法まとめ3

「Security.salt」はハッシュの生成に用いられるもので、ランダムで長いほど推測が困難になるようです。
「Security.cipherSeed」は暗号化・復号化のための文字列で、おおきくでランダムな整数がいいとのこと。
この2つを新しくして更新すると、以下のように赤く出てたエラーが消えます。

MacにCakePHPの環境を構築する方法まとめ4

DATABASEの設定

続いてデータベースの設定を行います。今回はMySQL環境を整えていきます。MySQLでのデータベース作成は、とりあえず割愛させていただきます。時間が合った時に、追記するかもしれません。

ここからは、MySQLにてtest_userというユーザがtest_passというパスワードでアクセスでき、test_databaseというデータベースを作成している前提でお話していきます。

データベースにアクセスするための設定を、CakePHPのデータベース設定ファイルに書いていきます。
設定のデフォルトファイルが、/app/Config/database.php.defaultにあるので、これをコピーしてdatabase.phpファイルを作り、以下のように編集していきます。

public $default = array(
    'datasource' => 'Database/Mysql',   //MySQL環境のため今回はこのまま
    'persistent' => false,
    'host' => 'localhost',              //ローカル環境のためこのまま
    'login' => 'test_user',                 //MySQLでのログインユーザ名
    'password' => 'test_pass',          //そのパスワード
    'database' => 'test_database',      //データベース名
    'prefix' => '',
    'encoding' => 'utf8',                        //エンコーディングはutf8
);

デバッガの設定

これは任意なのですが、CakePHPにはデバッガを導入することができます。今まで、入れてなかったのですが入れるとすごく便利で、定義した定数とか発行したSQLなどを見ることが可能になります。導入方法はちょっと手間のかかるものですが、頑張りましょう。

デバッガのインストール

ソースはGitHubにあるので、クローンするかZipファイルでダウンロードするかします。場所は、/app/Plugin/で、ここにダウンロードして展開します。
CakePHPは規約が重要で、今回はこのツールのフォルダ名を”DebugKit”にすることがポイントです。最終的に以下のような感じに設置できればOKです。

MacにCakePHPの環境を構築する方法まとめ5

デバッガプラグインのインクルード

次に、設置したプラグインを読み込むための設定を行います。CakePHPでのロードの記述は、/app/Config/bootstarpに書かれていて、ここに以下の1行を追加します。場所は、63~71行目に説明があるのでその下がよいかと。

CakePlugin::load('DebugKit'); //Loads a single plugin named DebugKit

他のプラグインもロードしたい場合は、

 CakePlugin::loadAll(); // Loads all plugins at once

を追加します。これで、ロードは完了です。

全画面でデバッガのツールバーを使用するため、AppControllerでインクルード

MVCモデルをまだ説明していないのですが、データとブラウザの架け橋の役割をになっているのが、Controllerです。このControllerの上位クラスがAppControllerで作成するコントローラーは全て、AppControllerのサブクラスになります。

このAppControllerでデバッガのツールバーをインクルードすることで、フレームワーク全体でデバッガを使用できるようになります。さて、インクルードする方法ですががAppControllerの中で以下の1行を追加するだけです。AppControllerは、/app/Controller/AppController.phpにあります。

class AppController extends Controller {
    public $components = array('DebugKit.Toolbar');
}

こうすることで、以下の写真の右端のように、CakePHPのロゴみたいのが出てくるようになります。

MacにCakePHPの環境を構築する方法まとめ6

このボタンを押すと、

MacにCakePHPの環境を構築する方法まとめ6

こんな感じで情報が出てきてくれるようになります。

本番環境にアップロードする際大事なこと

デバッガは本番環境にアップロードする際は消す必要があります。これは、デバッグをどこまでするかデバックモードの変更すると消えます。
具体的には、セキュリティソルトを設定するときに編集したcore.phpにて変更できます。場所は復習ですが、/app/Config/core.phpです。

/**
 * CakePHP Debug Level:
 *
 * Production Mode:
 *  0: No error messages, errors, or warnings shown. Flash messages redirect.
 *
 * Development Mode:
 *  1: Errors and warnings shown, model caches refreshed, flash messages halted.
 *  2: As in 1, but also with full debug messages and SQL output.
 *
 * In production mode, flash messages redirect after a time interval.
 * In development mode, you need to click the flash message to continue.
 */
    Configure::write('debug', 0);

以上のコードのように、0にすることでエラーメッセージなど全く表示されないモードに変更できます。本番環境にアップロードする際には、かならず設定しましょう。

さいごに

長かったですが、以上で基本的な導入は終了です。次回、CakePHPの全体の構成の説明をしていきたいと思います。

CakePHPのおすすめ参考書籍


-CakePHP