20
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CakePHPチュートリアル実施メモ(日本向け補足付)

Last updated at Posted at 2014-04-27

はじめに

CakePHPのチュートリアルを実施した際に、日本向けの設定が追加で色々必要だったので、その辺(※)も含めて整理しました。

CakePHP ブログチュートリアルの、「Cakeのダウンロード」~「mod_rewriteについて」に相当する内容です。

※「タイムゾーン設定」「MySQLの文字コード設定」

環境

CentOS 6.5
PHP 5.3.3
CakePHP 2.4.5
Apache 2.2.15
MySQL 5.1.71

ApacheやらMySQLやらは既に動作している状態からのスタートです。

準備

$ yum install wget -y
$ yum install php-mysql -y

Cakeのダウンロード

# ダウンロード
$ wget https://github.com/cakephp/cakephp/archive/2.4.5.tar.gz
$ tar zxvf 2.4.5

# apacheのドキュメントルートに配置
# 当記事では直下ではなくその配下の "cake_2_0" に配置しています
$ mv cakephp-2.4.5/ /var/www/html/cake_2_0

Tmpディレクトリのパーミッション

whoamiチェック

$ cd /var/www/html/cake_2_0
$ vim whoami.php
whoami.php
<?php echo exec('whoami'); ?>

whoami.phpにアクセスし、実行ユーザを確認
http://example.com/cake_2_0/whoami.php

結果がapacheだったとして進めます。

# 権限設定
$ chown -R apache app/tmp

タイムゾーン設定

Linuxのタイムゾーン設定

$ ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime -f

core.phpのタイムゾーン設定をコメントアウト

$ vim app/Config/core.php
core.php
//date_default_timezone_set('UTC');

php.iniのタイムゾーン設定

$ vim /etc/php.ini
php.ini
[Date]
; Defines the default timezone used by the date functions
date.timezone = "Asia/Tokyo"

apacheを再起動しておきます。

MySQLの文字コード設定

$ vim /etc/my.cnf
my.cnf
[mysql]
default-character-set = utf8

[mysqld]
character-set-server  = utf8
collation-server      = utf8_general_ci
default-character-set = utf8

mysqlを再起動しておきます。

ブログデータベースの作成

# MySQLの準備
$ mysql -uroot -p123456
mysql
/* ユーザ作成 */
CREATE USER cake IDENTIFIED BY '123456';

/* DB作成 */
create database cake;
grant all on cake.* to cake;

exit;
$ mysql -uroot -p123456 -Dcake
mysql
/* まず、postsテーブルを作成します: */
CREATE TABLE posts (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(50),
    body TEXT,
    created DATETIME DEFAULT NULL,
    modified DATETIME DEFAULT NULL
);

/* それから、テスト用に記事をいくつか入れておきます: */
INSERT INTO posts (title,body,created)
    VALUES ('タイトル', 'これは、記事の本文です。', NOW());
INSERT INTO posts (title,body,created)
    VALUES ('またタイトル', 'そこに本文が続きます。', NOW());
INSERT INTO posts (title,body,created)
    VALUES ('タイトルの逆襲', 'こりゃ本当にわくわくする!うそ。', NOW());
);

Cakeのデータベース設定

# 雛形をコピー
$ cp app/Config/database.php.default app/Config/database.php

$ vim app/Config/database.php
database.php
<?php
class DATABASE_CONFIG {

        public $default = array(
                'datasource' => 'Database/Mysql',
                'persistent' => false,
                'host' => 'localhost',
                'login' => 'cake',
                'password' => '123456',
                'database' => 'cake',
                'prefix' => '',
                'encoding' => 'utf8',
        );
}
?>

追加の設定(salt, cipherSeed)

ランダム文字列生成

参考

# salt生成
$ cat /dev/urandom | tr -dc 'a-zA-Z0-9_!@#$%&+-' | fold -w 128 | head -n 1

# cipherSeed生成
$ cat /dev/urandom | tr -dc '0-9' | fold -w 128 | head -n 1
core.php
Configure::write('Security.salt', '生成したsalt');
Configure::write('Security.cipherSeed', '生成したcipherSeed');

httpd.confでmod_rewriteを有効にする

$ vim /etc/httpd/conf/httpd.conf
httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so

<Directory "/var/www/html/cake_2_0">
  Options FollowSymLinks
  AllowOverride All
</Directory>

.htaccessを3箇所に配置

/var/www/html/cake_2_0/.htaccess
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteBase   /cake_2_0
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>
/var/www/html/cake_2_0/app/.htaccess
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase   /cake_2_0/app
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>
/var/www/html/cake_2_0/app/webroot/.htaccess
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

終わり

あとは、アプリケーションのコードを書いていきましょう。

ブログチュートリアル - レイヤーの追加から続きをしてください。

おまけ:フォームに自動で作成されるラベルを日本語に変更する方法

add.ctp
echo $this->Form->input('title', array('label' => 'タイトル'));
echo $this->Form->input('body', array('label' => '本文', 'rows' => '3'));
20
17
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
20
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?