WEBデザイン・開発講義WEB Design&Development Lecture

PHPフレームワーク「CakePHP」の動作環境づくり

「PHP」のフレームワークの比較と選択、動作環境づくり

「CakePHP」のフレームワーク動作環境づくり

『CakePHP』のインストール※画像クリックで拡大表示(リンク)

  • CakePHP2.xのダウンロードと設定
    CakePHPの日本語ダウンロードサイトから最新版「CakePHP 2.5.1 安定版」をクリックしてダウンロードする。
    「CakePHP 2.5.1 安定版」のダウンロード
  • 「CakePHP2」のMVCは
    モデル(Model)は、アプリケーションのメインロジックを形成して、(データベースの)データと連携して処理を行い、処理結果をコントローラーに渡します。
    ビュー(View)は、WEBアプリケーションにおけるインターフェイス部分に関わり、モデルやコントローラーよって作り出されたデータをもとにHTML生成を行う処理です。
    コントローラー(Controller)は、リクエスト情報を直接処理し、モデルとビューを制御します。コントローラーのクラス構造はURLに直結するもので、コントローラークラスとそのメソッドの組み合わせでURLが形成されます。
    CakePHP2のMVC構成概略図
    • ブラウザからの「REQUEST」から「HTML出力」の「RESPOSE」までの流れ
      1. ブラウザから、Webサーバに「REQUEST」を送信
      2. 「Dispatcher」を通してURLを解析してパラメータを取出し
      3. リクエストされたURLは、「Router」によって、コントローラのアクション(メソッド)にマップ
      4. コントローラは、(データベースから)アプリケーションのデータを取り出すためにモデルを使用し、I/O処理、ビヘイビア、データMappingが動作する
      5. モデルがデータを取得してコントローラに送られ、コールバック設定されていれば、モデルが動作
      6. コントローラは、コンポーネントを使用して、データをさらに調整したり、セッション操作、認証、メールの送信などを行う
      7. コントローラのset()メソッドにより、コントローラがモデルとコンポーネントから準備したデータをビューに渡す
      8. ビューのロジックが動作して、エレメントやヘルパーなどがあれば使用され、レイアウト化されたHTMLドキュメントを生成
      9. コントローラを通して、生成されたHTMLドキュメントを「RESPOSE」して、ブラウザに表示
    • URL振り分けの命名規則
      コントローラは、命名規約があり"Controller"を付加して区別し、URLのパスのコントロール(変換)するApacheの「mod_rewrite」を利用し、「[controller_name]/[action]/parameter」の形式を実現します。又「routes.php」の設定によるコントロールも可能です。
      [webroot]下に「img,css,js,file」などのリンクファイルを配置して、物理的なリンク方法として設定します。
      CakePHPの命名規則(PDF)
    • MVCの機能追加
      1. コントローラの機能追加は、コントローラの実行前(beforeFilter)、実行後のフィルタ(afterFilter)とコントローラの実行後のビューの表示"render"前(beforeRender)の機能拡張ができ、"components"フォルダに追加します。
      2. ビューの機能追加は、ヘルパー(helpers)によって、複数のビューから共通の表現用ロジックにアクセスできるようにし、レイアウト(layout)とエレメント(element)によってビューコードの再利用を促進します。
      3. モデルの機能追加は、モデル間で共通の機能を追加する方法として利用できるように"behaviors"に配置し、RSSフィード、CVSファイル、LDAPエントリ、iCalイベントなどのモデルが扱えるようなデータソースを"datasources"に配置します。
      4. アプリケーションの機能追加は、モデル、コントローラ、ビューをパッケージ化したものをプラグイン(plugin)として複数のアプリケーションで使えるようにできます。
  • ダウンロードした「cakephp-2.5.1.zip」を解凍して、WEBサーバのドキュメントルートに「_cakephp」として配置します。
    アプリケーション開発した内容は、一般的に「app」フォルダに設置します。
    【 CakePHPのフォルダ構造 】

    C:¥WEBserver¥htdocs¥
    _cakephp ←リネームした「CakePHP用」フォルダ
      ├ app ←「CakePHP」アプリケーションのフォルダ
        ├ Config ←構成設定のフォルダ
        ├ Controller ←コントローラのフォルダ
        ├ Model ←モデルのフォルダ
        ├ Plugin ←debugツール等のフォルダ
        ├ View ←ビュー(テンプレート)
        ├ Vendor ←外部作成のクラスやライブラリ
        ├ webroot ←運用時のドキュメントルート
          ├ .htaccess ←Apache「mod_rewrite」設定
        ├ .htaccess ←Apache「mod_rewrite」の設定
        ├ ...
      ├ lib ←「Cakeライブラリ」フォルダ
      ├ plugins
      ├ vendors
      ├ .htaccess ←Apache「mod_rewrite」の設定
      ├ index.php
      ├ ...

    • WEBサーバ「Apache」用の初期設定ファイル「httpd.conf」の追加変更内容は
      1. 「rewrite_module」が有効であることの確認
      2. 「IfModule alias_module」ディレクティブの仮想ディレクトリ「cake」に対する「ScriptAlias cake [絶対パス]」の追加(運用時のルート'webroot'のパス設定)
      3. 「_cakephp」フォルダに対する「Directory」ディレクティブのアクセス制御の追加

      LoadModule rewrite_module modules/mod_rewrite.so
      ; ↑ 154行目:有効の確認
      <IfModule alias_module> ;← 332行目辺り
        ScriptAlias /cake/ "C:/WEBserver/htdocs/_cakephp/app/webroot/"
      ;↑ 360行目辺りに仮想ディレクトリ「cake」の追加
      </IfModule>
       ...
      ;↓ 390行目辺りに「_cakephp」のアクセス制御の追加
      <Directory "C:/WEBserver/htdocs/_cakephp/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
      </Directory>
       ...

      Apache用の「httpd.conf」設定ファイル:「httpd_cakephp.zip」のダウンロード
      「httpd.conf」の変更した内容は、「Apache」の再起動して有効となります。
    • 「Apache」用のアクセス制御ファイル「.htaccess」は
      「mod_rewrite」について記述し、ダウンロードした内容を変更する必要はありません。

「PHPUnit」のインストールと設置

  • 「PHPUnit」のインストール
    PHPのテスト環境として、フレームワークで広く利用されている「PHPUnit」をインストールします。やり方は、[1]「PEAR」(2014年12月末で終了)、[2] PHP Archive (PHAR)、[3] Composerなどがあり、Composerによるインストールを実施します。

    C:¥PHP>php composer.phar create-project PHPUnit/phpunit /PHPUnit/ 4.1.*
    Installing phpunit/phpunit (4.1.3)
        - Installing phpunit/phpunit (4.1.3)
    ...

    インストールされた「C:¥PHPUnit」直下にある「vendor」フォルダをコピーして「C:¥PHP¥includes¥」フォルダに設置し、「PHPUnit」にリネームして、PHPからincludeできるようにパスを通します。
  • 「xdebug」のPHP拡張モジュールのインストール
    PECLサイトの「xdebug」から、最新版「DLL」をクリックする。
    PHP拡張モジュール「xdebug」の最新版「DLL」選択
    「PHP5.3 Thread Safe (TS) x86」をダウンロードする。
    PHP拡張モジュール「xdebug」のダウンロード
    解凍して、「php_xdebug.dll」を「C:¥PHP¥ext」にコピー&ペーストして、PHP初期設定ファイル「php.ini」に「zend_extension= "C:¥php¥ext¥php_xdebug.dll"」(絶対パス指定)を追加して更新します。Apacheの再起動で「xdebug」が有効になります。

「CakePHP」のフレームワーク設定

  • 「CakePHP」の初期状態の確認
    「 CakePHP」のブラウザからlocalhostのパス「/_cakephp/」を入力して、起動すると初期起動時には、エラー(背景色:赤)、警告(背景色:黄色)のメッセージが表示されますので、構成の設定が必要です。
    「CakePHP」の初期起動時のエラー・警告内容
  • 「CakePHP」の初期設定
    • 「Security.salt」と「Security.cipherSeed」の値の生成
      先頭に表示されているエラーは、「Security.salt」と「Security.cipherSeed」のデフォルト値の書き換えが必要なため、PHPプログラムで作成します。
      「Security.salt」は英数字、「Security.cipherSeed」は数字のランダムな値に設定するため、以下に乱数発生するPHPプログラムを明示します。

      <?php
      //Security.cipherSeedのvalue→
      $num = ''; for($i=0;$i<10;$i++){$num .= rand(100,999);}
      echo 'Security.cipherSeed=',$num,'<br>';
      //Security.saltのvalue→
      $num = ''; for($i=0;$i<10;$i++){$num .= rand(100,999);}
      echo 'Security.salt=',sha1($num),'<br>';
      ?>

      core.php用の設定値生成プログラム:「core_value_make.zip」のダウンロード
      ダウンロードしたプログラムを解凍して、実行して生成した値を得ます。
      core_value_make.phpプログラムを実行して生成した例
    • 「Security.salt」と「Security.cipherSeed」のデフォルト値の書き換え
      実行して生成した値で、「_cakephp¥app¥Config¥」にある「core.php」プログラムの修正を行います。

      Configure::write('Security.salt', '531568a8f38a3b9e366f8b188a5da1db8856a1c3'); ←225行目当り
      Configure::write('Security.cipherSeed', '597573877235152469866303373983'); ←230行目当り

    • 「CakePHP」用のデータベース構成の設定
      黄色の背景色である警告は、「データベース構成のファイルがない」内容で、「_cakephp¥app¥Config¥」にある「database.php.default」を以下のように修正して新たな「database.php」ファイルを作成します。

      class DATABASE_CONFIG {
         ...
        'login' => 'root', ←71,82行目当り
        'password' => 'admin', ←72,83行目当り
        'database' => 'cakephp', ←73,84行目当り

    • MySQLの「CakePHP」用のデータベース作成
      コマンドプロンプトで「MySQL」を起動し、「CakePHP」用のデータベース構成で設定した「cakephp」のデータベース作成します。

      mysql> create database cakephp;
      Query OK, 1 row affected (0.00 sec)

      mysql>

  • 「CakePHP」用のdebug_kitのダウンロードと設定
    残りの黄色の背景色である警告は、「DebugKitがインストールされていない」内容で、「GitHub」サイトからダウンロードします。
    「CakePHP DebugKit」のダウンロード
    • 「DebugKit」の配置
      ダウンロードした「debug_kit-master.zip」を解凍して、「_cakephp¥app¥Plugin¥」のフォルダ内に「DebugKit」にリネームして配置します。
    • 「bootstrap.php」の設定の編集
      「_cakephp¥app¥Config¥」にある「bootstrap.php」の67~71行目付近を編集、コメントアウトされているので、コメントアウトを外す。
      「bootstrap.php」の初期設定の編集
    • 「AppController.php」の設定の編集
      「_cakephp¥app¥Controller¥」にある「AppController.php」の33行目付近に
      public $components=array('DebugKit.Toolbar');」の内容を追加する。

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

  • 「CakePHP」の環境設定の再確認
    上記の内容の修正を実施した後、再度「/_cakephp/」下のindex.phpを起動して、[1]データベース構成有り、[2]CakePHPのデータベース接続、[3]DebugKitプラグイン有りを含めて、すべて背景色が緑色になっているとOKです。
    「cakephp」のindex.php起動とOK確認

「CakePHP」の動作確認

  • 「Hello World!」と表示するコントローラ作成
    「HelloController.php」のプログラムを作成して「_cakephp¥app¥Controller¥」に配置します。

    <?php
    class HelloController extends AppController{
        // Viewをしないので、false
        public $autoRender = false;
        // indexアクション
        public function index() {
           echo "Hello World!";
        }
    }

    「Hello World!」表示プログラム:「HelloController.zip」のダウンロード
  • 「HelloController.php」の起動
    ブラウザから「/_cakephp/hello/」のパスを入力して、「HelloController.php」プログラムを起動します。
    Hello World!」と表示されることを確認します。
    「Hello World!」表示プログラムの起動
  • webrootの「cake」の起動
    仮想ディレクトリの「cake」を入力して起動すると、webrootのindex.phpが起動されます。
    webrootの「cake」の起動のエラー
    URL rewriting is not properly configured on your server.」のエラーが表示された場合は、「_cakephp¥app¥View¥Pages」にある「home.ctp」テンプレートファイルの26行目を以下のように「!」を追加します。

    if(!file_exists(WWW_ROOT.'css'.DS.'cake.generic.css'));

    修正すると以下のように背景色の赤がないページが表示されれば、OKです。
    webrootの「cake」の起動とOK表示

PHPフレームワーク補足説明

PHPリファレンス

参考資料の表示

pagetopへ