ホーム > カテゴリ > PHP・Laravel・CakePHP >

CakePHPをサブディレクトリで本稼働させる [Nginx/Apache]

1. Nginx

1-1. 前提

// プロジェクトのパス(ソース)
/home/ユーザー名/cake/bbs

// やりたいこと
http://example.com/dev/bbs
でアクセス可能とする

1-2. xxx.conf

location /dev/bbs {
    alias /home/ユーザー名/cake/bbs/webroot;
    try_files $uri $uri/ @cake_1;

    index index.php index.html index.htm;
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME /home/ユーザー名/cake/bbs/webroot/index.php;
   }
}    
location @cake_1 {
    rewrite /dev/bbs/(.*)$ /dev/bbs/index.php?/$1 last;
}  

1-3. webroot/index.phpに追記

このままだと http://example.com/dev/bbs/webroot/index.php でアクセス可能なので、webroot/index.php の先頭に次のコードを追記します。

if ($url == 'http://example.com/dev/bbs/webroot/index.php'){
  header('Location: http://example.com/dev/bbs');
  exit;
}

1-4. Nginxの再起動

sudo systemctl restart nginx

2. Apache

WSL(Ubuntu18.04)のApacheで確認。他の環境でも同様だと思われます。

2-1. 前提

// プロジェクトのパス(ソース)
// ※D:\cake\bbsの事です。
/mnt/d/cake/bbs

// やりたいこと
http://localhost/test/
でアクセス可能とする

2-2. rewrite_moduleの有効確認

// モジュールの状態を確認
apache2ctl -M  

rewrite_moduleが含まれていない場合は次のコマンドで有効にする。

// mod_rewriteの有効化
sudo a2enmod rewrite

// mod_rewriteの無効化
//sudo a2dismod rewrite

※WSLだとrewrite_moduleはデフォルトはオフになっているようです。

2-3. 000-default.confの編集

000-default.confは書き込み権限がないので、rootでログインする。

// ルートログイン
su root

// 000-default.confの編集
vi /etc/apache2/sites-available/000-default.conf

末尾に以下を追記する。

Alias /test /mnt/d/cake/bbs/webroot
<Directory "/mnt/d/cake/bbs/webroot">
  Options Includes ExecCGI FollowSymLinks
  AllowOverride All
  Require all granted
  Order allow,deny
  Allow from all
</Directory>

2-4. Apacheの再起動

sudo service apache2 restart

2-5. Could not start the session

このエラーが発生する場合は「bin/cake cache clear_all」で全てのキャッシュをクリアします。それでもダメな場合はwebroot/index.phpの先頭に「session_start();」のコードを追記すればいけるかも知れません。

※Apacheの再起動は忘れないでください。

Apacheの参考文献

Ubuntu server 18.04: Apache2 のインストールと設定,運用





関連記事



公開日:2021年02月10日
記事NO:02881