ComposerでCakePHPをインストールする方法

CakePHP

ComposerでCakePHPをインストールする方法です。
公式の情報にない手順が多かったので、いろいろ大変でした。

 

Composerのインストール

まずComposerをインストールしておいてください。

 

CakePHPのインストール

CakePHPをインストールしたい場所にcomposer.jsonファイルを作成します。
下記はCakePHPとDebugKitをインストールする設定です。

{
    "name": "example-app",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
        "cakephp/cakephp": "2.5.2",
        "cakephp/debug_kit": "2.2.3"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}

 

Windowsならコマンドプロンプトで、Macならターミナルでcomposer.jsonファイルを作成した場所に移動し、 “composer install” を実行します。

>composer install
Loading composer repositories with package information
Initializing PEAR repository http://pear.cakephp.org
Installing dependencies (including require-dev)
  - Installing composer/installers (v1.0.15)
    Loading from cache

  - Installing cakephp/cakephp (2.5.2)
    Loading from cache

  - Installing cakephp/debug_kit (2.2.3)
    Loading from cache

Writing lock file
Generating autoload files

 

Bakeでプロジェクトを作成

Windowsでは “Vendor\bin\cake.bat” ファイルを修正しないと実行できないので、下記のように”bash” を “cmd /C” へ修正します。Macでは必要ありません。

@ECHO OFF
SET BIN_TARGET=%~dp0/../cakephp/cakephp/lib/Cake/Console/cake
cmd /C "%BIN_TARGET%" %*

 

コマンドプロンプトで “Vendor\bin\cake bake project sample1” を実行します。
sample1プロジェクトが作成されました。

>Vendor\bin\cake bake project sample1


Welcome to CakePHP v2.5.2 Console
---------------------------------------------------------------
App : CakePHP
Path: D:\pleiades\e4.4-php\xampp\htdocs\CakePHP\
---------------------------------------------------------------
Skel Directory: D:\pleiades\e4.4-php\xampp\htdocs\CakePHP\Vendor\cakephp\cakephp\lib\Cake\Console\Templates\skel
Will be copied to: sample1
---------------------------------------------------------------
Look okay? (y/n/q)
[y] > y
---------------------------------------------------------------
Created: sample1 in sample1
---------------------------------------------------------------
 * Random hash key created for 'Security.salt'
 * Random seed created for 'Security.cipherSeed'
 * Cache prefix set
 * app/Console/cake.php path set.
CakePHP is not on your `include_path`, CAKE_CORE_INCLUDE_PATH will be hard coded.
You can fix this by adding CakePHP to your `include_path`.
 * CAKE_CORE_INCLUDE_PATH set to D:\pleiades\e4.4-php\xampp\htdocs\CakePHP\Vendor\cakephp\cakephp\lib in webroot/index.php
 * CAKE_CORE_INCLUDE_PATH set to D:\pleiades\e4.4-php\xampp\htdocs\CakePHP\Vendor\cakephp\cakephp\lib in webroot/test.php
   * Remember to check these values after moving to production server
Project baked successfully!

 

絶対パスを相対パスへ修正

絶対パスで設定されている部分を相対パスに修正します。

if (function_exists('ini_set')) {
	$root = dirname(dirname(dirname(__FILE__)));

	// the following line differs from its sibling
	// /app/Console/cake.php
	ini_set('include_path', $root . PATH_SEPARATOR . $root . $ds . 'Vendor' . $ds . 'cakephp' . $ds . 'cakephp' . $ds . 'lib' . PATH_SEPARATOR . ini_get('include_path'));
}
/**
 * The absolute path to the "cake" directory, WITHOUT a trailing DS.
 *
 * Un-comment this line to specify a fixed path to CakePHP.
 * This should point at the directory containing `Cake`.
 *
 * For ease of development CakePHP uses PHP's include_path. If you
 * cannot modify your include_path set this value.
 *
 * Leaving this constant undefined will result in it being defined in Cake/bootstrap.php
 *
 * The following line differs from its sibling
 * /app/webroot/index.php
 */
define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib');
/**
 * The absolute path to the "Cake" directory, WITHOUT a trailing DS.
 *
 * For ease of development CakePHP uses PHP's include_path. If you
 * need to cannot modify your include_path, you can set this path.
 *
 * Leaving this constant undefined will result in it being defined in Cake/bootstrap.php
 *
 * The following line differs from its sibling
 * /app/webroot/test.php
 */
define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib');

 

プラグインの読み込み部分を修正

Composerでインストールしたプラグインが読み込まれるように修正します。
ここは公式の内容を参考にしています。

ComposerでCekePHPをインストール

CakeLog::config('error', array(
	'engine' => 'File',
	'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
	'file' => 'error',
));

// Pluginディレクトリ指定を相対パスで
App::build(array('Plugin' => array(ROOT . DS . 'Plugin' . DS)));

// composerのautoloadを読み込み
require ROOT . DS . 'Vendor' . DS . '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();

 

データベース設定

適当にデータベースを作成します。

create database cakephp_db default charset utf8

 

作成したデータベースに合わせて “Config\database.php.default” を元に “Config\database.php” を作成します。

class DATABASE_CONFIG {

	public $default = array(
		'datasource' => 'Database/Mysql',
		'persistent' => false,
		'host' => 'localhost',
		'login' => 'user',
		'password' => 'pass',
		'database' => 'cakephp_db',
		'prefix' => '',
		//'encoding' => 'utf8',
	);

	public $test = array(
		'datasource' => 'Database/Mysql',
		'persistent' => false,
		'host' => 'localhost',
		'login' => 'user',
		'password' => 'password',
		'database' => 'test_database_name',
		'prefix' => '',
		//'encoding' => 'utf8',
	);
}

 

動作確認

動作確認できました。

CakePHP 2.5.2

コメント

タイトルとURLをコピーしました