LoginSignup
35
38

More than 5 years have passed since last update.

Composerを使ってCakePHP環境を楽々構築!(Windows)

Last updated at Posted at 2014-12-09

はじめに

一般的なCakePHP環境構築手順として、CakePHPのzipファイルをダウンロード、解凍し、Apacheのドキュメントルート配下に配置するといった手順だと思います。ここでは、上記とは異なりComposerを使ってCakePHPの環境を構築していきます。

今回使用するミドルウェア・パッケージ

  • Xampp(PHP/Apache/MySQL)
  • Composer

Xamppのインストール

PHP、Apache、DBサーバをインストールするため、All in OneでインストールできるXamppをインストールします。インストール完了したら、ApacheとMySQLを起動しておきましょう。既にこれらの環境がある場合は読み飛ばしてください。

一応、私が作った手順のリンクです。

MySQLのDB作成

MySQLのDBも作成しておきましょう。すでに作成済みであれば、読み飛ばしてください。MySQL Workbench等のツールを使ってSQLを発行し、DBを作成しましょう。ここでは「sampledb」というDBを作成します。

create database sampledb

Apacheのドキュメントルートの変更

Apacheのドキュメントルート配下に、CakePHPとCakePHPで作成したAPPプロジェクトを配置する想定です。変更の必要がない場合やXamppインストールしていてデフォルト(xampp\htdocs)のままで良い場合は、読み飛ばしてください。

「httpd.conf」ファイルの「DocumentRoot」の箇所をドキュメントルートにしたいディレクトリに書き換えます。 ここでは"C:/workspace"に設定します。

xampp/apache/conf/httpd.conf
 ...
 ...
DocumentRoot "C:/workspace"
<Directory "C:/workspace">
 ...
</Directory>
 ...
 ...

Composerのインストール

Composerをインストールしてきいきます。下記リンクの手順でインストールしましょう。

CakePHPのインストール

ドキュメントルート配下にCakePHPをインストールします。まず、ドキュメントルート直下にcomposer.jsonファイルを作成します。

composer.json
{
    "name": "example-app",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
        "cakephp/cakephp": "2.5.*"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}

インストールを行います。
コンテキストメニュー(右クリックメニュー)で利用できる場合は、composer.jsonをクリック選択した状態で右クリックで「Composer Install」を選択。
composer_9.jpg

コンテキストメニュー(右クリックメニュー)で利用できない場合は、コマンドプロンプトを起動し、composer.jsonを保存したディレクトリに移動(cd)して次のコマンドを実行します。

composer install

実行すると下のような結果が表示されます。
cake_install.jpg

下記にインストールされます。
----------------------------------------------
<ドキュメントルート配下>(C:\workspace)
  └ Vendeor/
    ├ bin/
    ├ cakephp/  ← CakePHPです。
    ├ composer/
    └ autoload.php
----------------------------------------------

これでCakePHPのインストールは終了です。
続いてプロジェクトを作成していきます。

Bakeを実行してプロジェクトを作成

コマンドプロンプトでプロジェクトのルートディレクトリをカレントディレクトリに設定します。
cd /d <プロジェクトのルートディレクトリ>
【例】cd \d C:\workspace

コマンドプロンプトでbakeを実行します。下記コマンドを実行してください。ここではsampleプロジェクトを生成します。
.\Vendor\bin\cake bake project C:\workspace\sample

もしbashがないって言われたらcake.batを下記のように書き換えてください。

Vendor/bin/cake.bat
修正前: bash "%BIN_TARGET%" %*
修正後: cmd /C "%BIN_TARGET%" %*

create_project.jpg

CAKE_CORE_INCLUDE_PATHの設定

デフォルトでは、 bake は CAKE_CORE_INCLUDE_PATH をハードコードするようになっています。 アプリケーションの移植性を高めるためには、 webroot/index.php を修正し、 CAKE_CORE_INCLUDE_PATH を相対パスに変更します。

sample/webroot/index.php
define(
    'CAKE_CORE_INCLUDE_PATH',
    ROOT . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib'
);

ROOT -- アプリケーションのディレクトリパス

DebugKitプラグイン等をインストール

<ドキュメントルート配下>(C:\workspace)/Vendor/cakephp/cakephp/にあるcomposer.jsonファイルをコピーしてプロジェクト配下(C:\workspace\sample)にペーストします。そのペーストしたcomposer.jsonファイルを「composer install」します。

  • 右クリックで「Composer Install」or コマンドプロンプトでcomposer install実行
composer.json
{
    "name": "cakephp/cakephp",
    "description": "The CakePHP framework",
    "type": "library",
    "keywords": ["framework"],
    "homepage": "http://cakephp.org",
    "license": "MIT",
    "authors": [
        {
            "name": "CakePHP Community",
            "homepage": "https://github.com/cakephp/cakephp/graphs/contributors"
        }
    ],
    "support": {
        "issues": "https://github.com/cakephp/cakephp/issues",
        "forum": "http://stackoverflow.com/tags/cakephp",
        "irc": "irc://irc.freenode.org/cakephp",
        "source": "https://github.com/cakephp/cakephp"
    },
    "require": {
        "php": ">=5.2.8",
        "ext-mcrypt": "*"
    },
    "require-dev": {
        "phpunit/phpunit": "3.7.*",
        "cakephp/debug_kit" : "2.2.*"
    },
    "bin": [
        "lib/Cake/Console/cake"
    ]
}

実行後、プロジェクト直下の「Plugin」「Vendor」ディレクトリに「DebugKit」や「phpunit」がインストールされています。

オートローダー競合の問題解消

composerオートローダーとcakephpのオートローダーが競合するたConfig/bootstrap.php のコードの先頭に次の行を追加して、問題を回避します。

sample/Config/bootstrap.php
// composerのautoloadを読み込み
require ROOT . '/Vendor/autoload.php';

// CakePHPのオートローダーをいったん削除し、composerより先に評価されるように先頭に追加する
// https://github.com/composer/composer/commit/c80cb76b9b5082ecc3e5b53b1050f76bb27b127b を参照
spl_autoload_unregister(array('App', 'load'));
spl_autoload_register(array('App', 'load'), true, true);

CakePlugin::loadAll();

DB設定ファイル

Configディレクトリ配下にdatabase.php.defaultがあるので、同ディレクトリでコピペして「database.php」ファイルを作成し、中身を参照するDBの設定に書き換えます。

sample/Config/database.php
        ....
    public $default = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'root',
        'password' => '',
        'database' => 'sampledb',
        'prefix' => '',
        'encoding' => 'utf8',
    );
        ....
        ....

確認

下記URLにアクセスして確認する。

【例】http://localhost:8888/sample

下の画面のようにオールグリーンになっていればOK!。
2014-12-09_215531.jpg

参考

以上。

35
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
38