CakePHP3をDocumentRoot以外に設置

スポンサーリンク

CakePHP 3 のアプリケーションを、Apache 環境で DocumentRoot ディレクトリ配下以外のパスに設置して動作させる場合の設定です。検索して情報を探しますと、DocumentRoot 配下に直接 CakePHP アプリ全体を設置して公開する方法も結構見つかりますけど、あまり好ましくはない方法だと思う。DocumentRoot 以下には、CakePHP の webroot だけを公開するようにしたほうが良いかと思います。

— 環境 —
CakePHP 3.1.1
PHP 5.5.19
Apache 2.2

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

DocumentRoot 以下から CakePHP の webroot へのシンボリックリンクを作成

説明のため、CakePHP アプリケーションの設置場所を以下とします。このパスは、DocumentRoot 配下以外なので公開されない。current が付いているのは、Capistrano でデプロイしているためです。

また、Apache の DocumentRoot 設定が以下のパスと仮定します。これが公開するディレクトリとなる。

以上の前提の上で、DocumentRoot ディレクトリ配下から CakePHP の webroot へのシンボリックリンクを作成する。ここでは、cake から CakePHP の webroot へとシンボリックリンクを張るようにしてみました。

以下のとおりシンボリックリンクが作成されます。

これで…

http://example.com/cake

の URL から CakePHP アプリケーションにアクセスできるようになります。

CakePHP 3 では .htaccess の編集は特に必要なさそう

CakePHP 2.x までの情報ですと、mod_rewrite のために .htaccess ファイルの編集が必要と書いてあるページもあるのですが、自分で試した感じでは CakePHP 3 では、DocumentRoot 以下から webroot へのシンボリックリンクを作成するだけで良さそうでした。

CakePHP 3 の .htaccess ファイルは以下の2つですが、デフォルトのままで良さそうです。

webroot/.htaccess

.htaccess

CakePHP 3 アプリケーションを Apache サーバー環境で動作させる場合は、Capistrano でデプロイ & DocumentRoot 以下から webroot にシンボリックリンク作成だけでOKっぽいのでとても楽です。今のところこれで問題なさそうですが、問題が生じたらまたブログで報告します。

最後に… シンボリックリンクを作成する代わりに、Apache の設定ファイルである httpd.conf で、以下のように設定する方法でもおそらく大丈夫かと思います。

httpd.conf

この場合は、.htaccess の mod_rewrite で RewriteBase の設定が必要になるかもです。試してないので不確かですけれど。

スポンサーリンク
私は Ruby on Rails の前は、PHP & CakePHP を使っていました(今も使いますけど)。PHP についてはオライリーの本を中心に軽く10冊以上は読み込みました。
 
スポンサーリンク

Leave Your Message!