CakePHPで高速Webアプリ開発

第4回CakePHPでの開発環境を構築する

第12回ではCakePHPの概要を紹介し、第3回では情報収集に便利なサイトを紹介しました。今回からはCakePHPでのアプリケーション開発の実際の手順を紹介いたします。今回行う作業は以下になります。

  • CakePHPの入手
  • パッケージの展開と設置
  • パーミッションの設定
  • データベースへの接続設定

CakePHP(1.1)の動作には、WebサーバとPHP 4.3.2以降、DBはMySQL・PostgreSQL・ADODBのいずれかが必要です。今回は以下の環境を前提とします。

  • Apache 1.3.37
  • PHP 5.2.3
  • MySQL

CakePHPの入手

CakePHP本体はhttp://www.cakephp.org/から入手できます。現在配布されているパッケージは安定版の1.1(Stable)と開発版の1.2(alpha)があります。今回は安定版(Stable)を使うことにします。

http://www.cakephp.org/にアクセスし、⁠Stable: 1.1.~」のリンクを選択します。3種類の圧縮形式が並んだ赤く示されたリストが表示されたら、圧縮形式を選んでください図1⁠。中身はどれも同じです。

図1 Stable版のダウンロード

図1 Stable版のダウンロード

次に表示される画面がちょっとわかり辛いので注意が必要です。下のボックスに「Help the Cake Software Foundation grow CakePHP!」という見出しの文章がありますが、リンクはありません。

その上にある3つの「Donate Any」⁠Donate $1」⁠No Thanks」と書かれたタグのような画像が並んでいますので「No Thanks」を選びましょう図2⁠。ちなみにDonateは寄付という意味で、下の文章は寄付についての呼びかけです。寄付はオープンソースプロジェクトへの立派な参加行為ですので、CakePHPプロジェクトへの協力手段の一つとして検討する価値があります。

図2 Help the Cake Software Foundation grow CakePHP!.寄付の呼びかけ

図2 Help the Cake Software Foundation grow CakePHP!.寄付の呼びかけ

とりあえず今回はNo Thanksを選び、表示されたページ下部の「Download Latest Release」リンクからパッケージをダウンロードします図3⁠。

図3 パッケージのダウンロード

図3 パッケージのダウンロード

パッケージの展開と設置

パッケージを展開すると、以下のディレクトリとファイルが現れます。

app/
cake/
docs/
vendors/
index.php

設置方法は大きく分けて2種類あるのですが、今回はroot権限の無い制限された環境でも設置できる方法をご紹介いたします。仮に、サブドメインが利用できるサーバが利用可能で、設定されているサブドメインが

http://yourdomain.example.com/(このドメインは実在しません)

だったとして、このURLで公開されているディレクトリ(DocumentRoot)

/home/gihyo/public_html/

だったとします。

このディレクトリにCakePHP用のディレクトリを作成します。ディレクトリ名は任意でかまいません。ここでは「cake」とします。

cakeディレクトリを作成したら、展開したディレクトリとファイルをこのディレクトリ内に置きましょう。

/home/gihyo/public_html/cake/
  app/
  cake/
  docs/
  vendors/
  index.php

これで設置は完了しました。

設置できたかを確認するためにhttp://yourdomain.example.com/cake/にアクセスします。mod_rewriteが使用可能であれば図4のような画面が表示されます。

図4 mod_rewriteの確認

図4 mod_rewriteの確認

mod_rewriteが使用できない場合は、ブラウザ標準のスタイルシートの見栄えとなり、図5のような画面が表示されます。

図5 mod_rewriteが使用できない場合

図5 mod_rewriteが使用できない場合

この2つのように表示されない場合は、アップロード先・URL・サーバの設定が誤っている可能性がありますので、単純なミスがないか確認してみてください。

パーミッションの設定

CakePHPは動作時にModelのキャッシュやViewのキャッシュなどの一時ファイルを作成します。そのためWebサーバが一時ファイルを書き込みできるように、書き込み先ディレクトリのパーミッションを適切に設定しておく必要があります。

sshなどでシェルが利用可能な場合は、app/tmp以下を「chmod -R 707」とするなどして、再帰的に丸ごと設定してもよいでしょう。シェルが利用できずFTPのみの場合は以下赤字部分の6つのディレクトリに書き込み権限を与えます。

/home/gihyo/public_html/cake/
  app/
    tmp/
      cache/
        models/
        persistent/
        views/
      sessions/
      logs/
      tests/

データベースへの接続設定

今回の環境構築の仕上げとして、データベースへの接続情報を設定します。

app/config/database.php.defaultをコピーまたはリネームして、app/config/database.php を作成します。 database.phpではDATABASE_CONFIGクラスが定義されており、データベースへの接続情報をメンバ変数として定義しています。デフォルトの記述を参考にして、適切な情報に書き換えます。

<?php
// app/config/database.php を書き換えた例
class DATABASE_CONFIG {
   var $default = array(
     'driver'   => 'mysql',
     'connect'  => 'mysql_connect',
     'host'     => 'localhost',
     'login'    => 'gihyo',
     'password' => 'gihyopass',
     'encoding' => 'utf8',
     'database' => 'gihyo_cake',
     'prefix'   => '',
   );
}

デフォルトの記述では、DATABASE_CONFIG::$default変数と DATABASE_CONFIG::$test 変数があります。$default変数は動作時に接続先を指定しない場合に自動で選ばれる接続先を書きます。テストに使用するデータベースがある場合や、モデルによって接続先を変更したい場合は任意の変数名でここに接続先を列挙しておくことになります。

適切な情報に書き換えたら、再度、http://gihyo.example.com/cake/にアクセスします。

CakePHPからデータベースに接続に成功した場合は、図6のように表示されます。

図6 データベースへの接続が成功した場合

図6 データベースへの接続が成功した場合

接続できなかったときは以下のようなWarningメッセージとともに「Cake is not able to connect to the database.」と表示されます(phpの設定によってはWarningは表示されないことがあります⁠⁠。

Warning: mysql_connect() [function.mysql-connect]: Access denied for user: 'gihyo@localhost' (Using password: YES) in /home/gihyo/public_html/cake/cake/libs/model/dbo/dbo_mysql.php on line 100

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /home/gihyo/public_html/cake/cake/libs/model/dbo/dbo_mysql.php on line 105

Cake is not able to connect to the database.

接続情報やデータベース側が適切に設定されているかを確認してください。

以上で一通りの準備が整いましたので、次回からはアプリケーション部分の開発を進めたいと思います。

おすすめ記事

記事・ニュース一覧