CPIサーバでCakePHPを使うvol.1

CPIサーバでCakePHPを使うvol.1 はコメントを受け付けていません。 Technical

プログラマのしずみです。

レンタルサーバでCakePHPなどのPHPフレームワークを使う時、初期設定が結構大変ですよね。
なかなか情報が少ないので、設定に心が折れてやめてしまう人もいるのでは無いでしょうか?

ということで、CPIサーバでCakePHPを使用する際に必要な設定を含め、インストール方法をご紹介します。

0. 開発環境

  • CPIサーバACE01
  • PHP 5.5.16
  • CakePHP2.6.3.

サーバはCPIの標準的なレンタルプランで、提供されている最新のPHPのバージョンを使用します。
CakePHPはこの記事を書いている時(2015/3/23)には3系(3.0.0)の安定版が発表されているのですが、構造がかなり変更されていますので、その後の開発についての情報が多いであろう2系の最新安定版を使用します。

ダウンロードはこちらから。

1. ファイルの設置

ダウンロードしてきたファイルを展開すると以下のようなディレクトリ構造になっています。
CakePHP展開後構造

CakePHPの基本ファイル群はドキュメントルート以下には設置しないのが定石です。
ですので、このファイル群の中のapp/webroot/の中を除き、今回は/htmlと同じディレクトリレベルに設置するものとします。

/┬ html
 │ ├ css/
 │ ├ files/
 │ ├ img/
 │ ├ js/
 │ ├ favicon.ico
 │ ├ index.php
 │ └ test.php
 └ cake
   ├ app/
   ├ lib/
   ├ plugins/
   ├ vendors/
   ├ index.php
   ├ …

こんな感じですね。

2. .htaccess設定

さて、ここまで来たら、設定をして、動作を確認すれば開発し放題です。
恐らくほとんどのレンタルサーバではhtml内(app/webroot/内)のindex.phpの設定値を変更すれば動くのですが、CPIサーバでは加えて.htaccessに設定をする必要があります。(設定しないと、403 Forbiddenが返される。)

では順番に。以下が、初期状態の.htaccess

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^ index.php [L]
</IfModule>

んで追加するのは、

AddHandler x-httpd-php5516 .php
Options +FollowSymLinks
suPHP_ConfigPath /usr/home/[ユーザID]/secure/php.ini

この3行です
絶対的に必要になるのは2行目の ” Options +FollowSymLinks ” です。
CakePHPではシンボリックリンクを使用しますが、CPIの初期設定では有効化されていないのでこの設定が必須です。
ここで、少し時間を取られました…

さて、残りの2行ですが、1行目の ” AddHandler x-httpd-php5516 .php ” はphpのバージョンの固定化です。
常に最新版を使用するのであれば問題ないのですが、Webサービスを作成して運用する場合は自動でPHPのバージョンが変わっても困りますので、明示的にバージョンを設定します。

3行目はphp.iniファイルの場所を指定します。デフォルトの情報は上記の位置ですが自分で設定を加える場合は任意の場所にphp.iniを作成し、その位置を指定してください。

3. index.php設定

.htaccessの設定して、設置ディレクトリにアクセスすると無事PHPが動いていることが確認できます。(ぐっさりエラーを吐いていますが。)
ここからは、通常通りの設定です。

以下が、index.phpで設定すべき部分です。

/**
 * The full path to the directory which holds "app", WITHOUT a trailing DS.
 *
 */
if (!defined('ROOT')) {
 define('ROOT', dirname(dirname(dirname(__FILE__))));
}

/**
 * The actual directory name for the "app".
 *
 */
if (!defined('APP_DIR')) {
 define('APP_DIR', basename(dirname(dirname(__FILE__))));
}

順番に見て行きましょう。
まず、39行目。ここに、CakePHPの基本ファイルを置いたディレクトリを指定します。注意点としては、ディレクトリの区切りを ” DS ” で表記します。(25行目で指定されています)
先の通りファイルを設置している場合、以下のような指定になります。

 define('ROOT', DS.'usr'.DS.'home'.DS.'[ユーザID]'.DS.'cake');

最後にはDSを付けないように注意してください。

そして、47行目には、標準で ” app ” となっているディレクトリ名を指定します。
今回は、ディレクトリ名を変更していませんので、以下のような指定になります。

 define('APP_DIR', 'app');

以上の設定を完了すると、無事にCakePHPが動作します。

4. core.php設定

さて、ここまでくれば後は、表示されているエラーを一つ一つ解決していくだけです。
まずはこちら。

Security.saltの値を変更してくださいと言っているので、表示されている通り ” app/config/core.php” のsalt valueを変更します。

/**
 * A random string used in security hashing methods.
 */
 Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');

ここの値を書き換えます。
基本的にランダムの値を設定する必要があるので、私はパスワード生成ツールをいつも利用します。
文字数も初期設定に併せて40文字くらいがよいでしょう。

次はこちら。
error2
先と同様にSecurity.cipherSeedの値を変更してくださいとあるので、変更します。

/**
 * A random numeric string (digits only) used to encrypt/decrypt strings.
 */
 Configure::write('Security.cipherSeed', '76859309657453542496749683645');

ここの値です。
コレも同様にパスワード生成ツールで29文字のランダム数値を設定します。

以上で、基本的な設定は完了となります。
この後、データベースの設定等を行っていくのですが、それはPart2でご紹介します。
(更新予定は未定です。)

Comments are closed.