【MAMP】CakePHPのインストール方法ではCakePHPを開発環境(MAMP)に入れてみる方法をご紹介しましたが、ローカルホスト上でのインストールと公開サーバー上でのインストールでは色々と違うことや気をつけた方が良いことがあります。

今回は、公開サーバーにCakePHPをインストールした時のポイントをかいつまんで記録しておこうと思います。
調べていても思いましたが公開サーバーがどんな環境なのかが大きく影響してくるため、すこし抽象的な内容になりますがご参考程度に…。

前提

  • 公開サーバーが、共用サーバー(※)
  • CakePHPをローカル環境に入れたことがある人向けの記事です

※ 筆者はさくらインターネットを利用しました。

知っておいたほうがいいこと

CakePHPの3.4. CakePHP のセットアップは読んでおいた方がいいでしょう。
ポイントは以下。

  • Cakeは「cake」、「cake/app」、「cake/app/webroot」の3つで構成されていて、それぞれはバラバラに配置できる
  • 「webroot」はDocumentRoot(公開されている領域)に置く必要がある

インストールする場所

一番簡単に動かすなら、「cake」セット(cake、cake/app、cake/app/webrootのセット)を丸ごとサーバーのDocumentRootに入れてしまいます。
入れる時に、隠しファイルである「.htaccess」などを入れ忘れないように気をつけてください。
しかし、cake丸ごとDocumentRootに入れるということはデータベースの接続情報や、cakeのセキュリティコードも公開されるということになりますのでセキュリティのことを考えるとこの構成はありえません。(バラバラにする場合のポイントは記事下の方の「CakePHPのフォルダを分割して配置する」をご覧ください。)

共用サーバー特有のクセがあるかもしれないので、テストでいったん素のcakeを丸ごと公開サーバーに入れてみてうまくいったら本番アプリをバラバラにしてインストールする…という段階を踏んだほうがいいかもしれないですね。

.htaccessの修正

使用する公開サーバーが共用サーバーの場合、.htaccessの「RewriteBase」を明示的に指定しないとリダイレクトがうまくいかない場合があります。
さくらサーバーはそのパターンに該当していたので、「cake」、「cake/app」、「cake/app/webroot」それぞれの.htaccessにRewriteBaseを追記しました。
実際のURLが「http://example.com/」の場合の例です。「http://example.com/cake/」のようにcakeフォルダがパスに含まれる場合は「/」→「/cake/」に読み替える必要があります。

# cake/の.htaccess
RewriteBase /

# cake/app/の.htaccess
RewriteBase /app

# cake/app/webroot/の.htaccess
RewriteBase /

CakePHPのフォルダを分割して配置する

セキュリティを考慮して、「cake/」、「cake/app/」、「cake/app/webroot/」を分割してインストールする場合のポイントは以下。

  • 「cake/」、「cake/app/」をDocumentRootの外に置く
  • 「cake/app/webroot/」をDocumentRootの中に置く
  • 「cake/app/webroot/index.php」を修正する

「cake/app/webroot/index.php」を修正します。次の「if」文の中を変更します。「/home/username/cake」という場所にcakeのルートを置いて、「/home/username/cake/app」にアプリケーション郡、「/home/username/cake/lib」が入っている場合は以下のようになります。

// cake/app/webroot/index.php

if (!defined('ROOT')) {
  define('ROOT', DS.'home'.DS.'username'.DS.'cake'); // ←変更
}

if (!defined('APP_DIR')) {
  define ('APP_DIR', 'app'); // ←変更
}

if (!defined('CAKE_CORE_INCLUDE_PATH')) {
  define('CAKE_CORE_INCLUDE_PATH', ROOT.DS.'lib'); // ←追記
  // 以下略
}

「DS」というのはディレクトリの区切り文字を示します。サーバーがUNIX系なのか、Windows系なのかで変わってくるのでそれを考慮した記述になっているんですね。
なので勝手にスラッシュにしたりしないでこの書き方に合わせましょう。

少し内容がズレますが、どこかのサイトから似たような文をコピーしたらシングルクォーテーションの文字コードが正しくなくて画面がまっしろになって焦りました(v_v;)
色がつくエディタで確認していたので気がつきましたが、編集の際は注意しましょう。

データベース接続設定の変更

ほとんどの場合、ローカル環境とはデータベース接続先が変わると思いますので、本番用に切り替えましょう。

「Security.salt」、「Security.cipherSeed」パラメータの設定

ローカル環境を設定した時に修正していると思いますが、この二つのパラメータを変更し忘れないようにしましょう。

デバッグレベルの変更

「core.php」を修正して、デバッグレベルを変更します。デバッグレベルを変更すると、エラーを「404」エラーにまとめたり、DebugKitを非表示にすることができます。

// app/Config/core.php
Configure::write('debug', 0);

定期バックアップ

セキュリティ強化のため、データベースのバックアップを定期的にとるように設定しましょう。

※CakePHP 2.4での情報です。