Help us understand the problem. What is going on with this article?

いまさらCakePHP2.xの環境構築

More than 1 year has passed since last update.

CakePHP2.xの環境構築

PHPド素人の個人的めも

前提条件

  • 開発環境はDockerで構築した。
  • comporser は今回使わず、プラグインのインストール等はGitを利用。
  • 以下各種プラグイン等Gitで取得しているが、ホスト側、ゲスト側のどちらで取得しても特に問題ない。
  • ただし、現状DockerコンテナのPHP5.3.3にはGitをいれていないので、ホスト側MacでGitコマンドを利用している。
  • このあたりは、大人の事情で本番環境にレンタルサーバーの利用を想定しており、開発環境でGit等で取得したソースコードをプラグイン含めて全てFTPでアップする予定。

ローカルに用意するサーバー構成

  • centos6.9
  • Apach
  • PHP5.3.3
  • mysql5.7

CakePHPの配置

  • github cakephp/cakephpから取ってくる。
  • ブランチを2.xに切り替えてzipでダウンロード(Gitでとってもよかった)
  • zipを解凍して適当な場所に配置。フォルダを任意のプロジェクト名に変更してプロジェクトルートとした。場所や名称はなんでもいい。

初期設定

  • セキュリティ設定、salt的なやつを設定する >> app/Config/core.php
  • database.phpの記述hostにはIPアドレスではなく、ホストのコンテナ名を記述する
app/Config/database.php
<?php
class DATABASE_CONFIG {
    public $default = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'db', # << コンテナ名
        'login' => 'root',
        'password' => 'password',
        'database' => 'room_guid',
        'encoding' => 'utf8'
    );
}

ブラウザアクセスでエラー表示

テンプレートエンジンの導入

CakePHPでtwigを使うためのTwigViewというプラグインをいれて、その中に別途Twig本体を入れる仕組みらしい。

導入手順

  • predominant/TwigViewから、GitHubのマスターブランチを取ってくる。
  • 以下、Readmeの通りにする

  • プラグインをダウンロード

$ cd app/Plugin
$ git clone git://github.com/predominant/TwigView.git TwigView        
 
# app/Plugin/TwigView/vendor/配下にTwig本体を入れるらしい
$ cd TwigView/
$ git submodule update --init

上記リポジトリのreadme.mdに使い方がのっている

  • プラグインの利用を許可するbootstrap.phpはすでにPlugin配下のものを全て読み込むように設定済み
app/Config/bootstrap.php
CakePlugin::loadAll();
  • AppControllerの設定
app/Controller/AppController.php
class AppController extends Controller {
     public $components = array('DebugKit.Toolbar');
     public $viewClass = 'TwigView.Twig'; # << ここと
     public $ext = '.twig';               # << ここ!!
     ...
  • TwigViewのキャッシュファイル保持位置の設定追加
app/Config/core.php
define('TWIG_VIEW_CACHE', APP . 'tmp');

ページにアクセスした時点で、app/tmp/ce/配下にキャッシュが保存されるみたい

マイグレーションの導入

プラグインCakeDC Migrationの導入

$ cd app/Plugin/
$ git clone git://github.com/CakeDC/migrations.git Migrations

初期マイグレーションの作成

  • app/の下で以下の各コマンドを実行する。
  • 空のマイグレーションファイルをコマンドで生成する Console/cake Migrations.migration generate を実行して対話形式の質問には全てNo(n)で答えて最後にマイグレーションファイル名を入力する。 以下の例ではcreate_userとした。
    [root@28124f4a27e3 app]# Console/cake Migrations.migration generate
    Cake Migration Shell
    ---------------------------------------------------------------
    Do you want to compare the schema.php file to the database? (y/n)
    [y] > n
    Do you want to compare the database to the schema.php file? (y/n)
    [y] > n
    Do you want to preview the file before generation? (y/n)
    [y] > n
    Please enter the descriptive name of the migration to generate:
    > crate_user
    Generating Migration...
     
    Done.

これでapp/Config/Migration/1542953578_crate_user.phpが作成される。
このファイルにDBの定義を記述する
公式ドキュメント CakeDC/migrationsに書き方(DBの定義方法)がのっている

マイグレーションの実行

マイグレーションコマンドについてもCakeDC/migrationsにかかれている

  • app/の下で以下の各コマンドを実行する。

  • DBを全てリセット(Drop)最初にやっておく
    Console/cake Migrations.migration run reset

  • マイグレーションファイルで未実行のものを全て実行する
    Console/cake Migrations.migration run all

  • 未実行のファイルから、バージョンを指定して実行する(対話形式)
    Console/cake Migrations.migration run

スキーマファイルの更新

  • スキーマファイルでDBを作ったり、DBからスキーマファイルを作ったりできる。
  • 今回はRails風にDBの作成はマイグレーションを利用し、更新されたDBからスキーマファイルを作成する。 そのため基本的にはDBの定義全体を確認するためのものとして利用する。
  • スキーマファイルはapp/Config/Schema/schema.phpにある(最初はないのでつくる)
  • app/の下で以下のコマンドを実行する
    Console/cake schema generate -f

    [root@28124f4a27e3 app]# Console/cake schema generate -f
    
    Welcome to CakePHP v2.10.13 Console
    ---------------------------------------------------------------
    App : app
    Path: /var/www/html/app/
    ---------------------------------------------------------------
    Cake Schema Shell
    ---------------------------------------------------------------
    Generating Schema...
    Schema file exists.
     [O]verwrite
     [S]napshot
     [Q]uit
    Would you like to do? (o/s/q)
    [s] > o
    Schema file: schema.php generated
    

    -fオプションで、モデルの有無に関係なくDBにあるテーブルを全て書き出す

その他Plugin

とりあえずGithubからzipでとってきて解凍して/Plugins/配下にほりこむ。

Debug Kit

導入方法

  • ファイルダウンロード>解凍>配置 /Pulugin/DebugKit
  • 設定ファイルで以下をコメントインして全てのプラグイン/Plugin/配下を読み込む
app/Config/bootstrap.php
CakePlugin::loadAll(); // Loads all plugins at once
  • AppControllerに設定記述
app/Controller/AppController.php
class AppController extends Controller {
  public $components = array('DebugKit.Toolbar');
  ...

参考にしたサイト

基本的な内容

プラグイン周り

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away