- 更新日: 2015年12月3日
- PHP & CakePHP
CakePHP3をDocumentRoot以外に設置
CakePHP 3 のアプリケーションを、Apache 環境で DocumentRoot ディレクトリ配下以外のパスに設置して動作させる場合の設定です。検索して情報を探しますと、DocumentRoot 配下に直接 CakePHP アプリ全体を設置して公開する方法も結構見つかりますけど、あまり好ましくはない方法だと思う。DocumentRoot 以下には、CakePHP の webroot だけを公開するようにしたほうが良いかと思います。
— 環境 —
CakePHP 3.1.1
PHP 5.5.19
Apache 2.2
DocumentRoot 以下から CakePHP の webroot へのシンボリックリンクを作成
説明のため、CakePHP アプリケーションの設置場所を以下とします。このパスは、DocumentRoot 配下以外なので公開されない。current が付いているのは、Capistrano でデプロイしているためです。
1 2 3 |
/path/to/cakephp/current/ |
また、Apache の DocumentRoot 設定が以下のパスと仮定します。これが公開するディレクトリとなる。
1 2 3 |
/path/to/document_root/ |
以上の前提の上で、DocumentRoot ディレクトリ配下から CakePHP の webroot へのシンボリックリンクを作成する。ここでは、cake から CakePHP の webroot へとシンボリックリンクを張るようにしてみました。
1 2 3 |
$ ln -s /path/to/cakephp/current/webroot /path/to/document_root/cake |
以下のとおりシンボリックリンクが作成されます。
1 2 3 |
/path/to/document_root/cake -> /path/to/cakephp/current/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
1 2 3 4 5 6 7 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule> |
.htaccess
1 2 3 4 5 6 7 |
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] </IfModule> |
CakePHP 3 アプリケーションを Apache サーバー環境で動作させる場合は、Capistrano でデプロイ & DocumentRoot 以下から webroot にシンボリックリンク作成だけでOKっぽいのでとても楽です。今のところこれで問題なさそうですが、問題が生じたらまたブログで報告します。
最後に… シンボリックリンクを作成する代わりに、Apache の設定ファイルである httpd.conf で、以下のように設定する方法でもおそらく大丈夫かと思います。
httpd.conf
1 2 3 |
Alias /cake/ /path/to/cakephp/current/webroot/ |
この場合は、.htaccess の mod_rewrite で RewriteBase の設定が必要になるかもです。試してないので不確かですけれど。
- – 参考リンク –
- CakePHPをDocumentRoot以外で利用する|A Day In The Boy’s Life
- インストール – CakePHP Cookbook 3.x ドキュメント
- さくらVPSでCakePHPを動かす。 – Qiita
- [CakePHP] ドキュメントルート以外の場所にインストールした場合、cake/dispatcher.phpを修正する必要がある。 – SumiTomohikoの日記
- PHP & CakePHP の関連記事
- PHP+MySQLでNo such file or directoryエラー
- bin/cakeコマンドでintlエラーが出る場合の対処(CakePHP)
- CakePHPアプリケーションをCapistranoでデプロイ
- Integrity constraint violation:Column ‘created’ in order clause is ambiguousエラー/CakePHP
- CakePHPでDB関連テーブルのレコード・データを取得
- CakePHPでカラム属性に別名/エイリアスを付ける仮想フィールド
- CakePHPで日付選択フォームのカスタマイズ
- CakePHP3で現在のコントローラー名・アクション名を取得
- PHPインストールでconfigure: error: freetype.h not foundエラー
- CakePHPでログイン後に元のページにリダイレクトさせる
Leave Your Message!