Laravel4、コードをpublic_htmlから外す

タグ: Laravel4  

多くの共有サーバーでは、デフォルトのドキュメントルートが自分のホームディレクトリー下のpublic_htmlになっているものが多いと思います。

Laravel4を利用する場合に、コードをこのpublic_htmlから外す方法を紹介します。

通常にインストールした場合

ディレクトリー構造:

/home
  /User
    /public_html
      /project1
        /app
        /bootstrap
        /vendor
        /public  <==== ここにドキュメントルートを設定
          -.htaccess
          -index.php
        -artisan

細かいファイルは省略しています。この場合でしたら、あるドメインのドキュメントルートを/home/User/public_html/project1/publicに設定し、そのドキュメントにアクセスするわけです。

public_htmlからコードを外す例

ディレクトリー構造:

/home
  /User
    /project1
      /app
      /bootstrap
      /vendor
      -artisan
    /public_html
      /project1 <==== ここにドキュメントルートを設定
        -.htaccess
        -index.php

この場合でしたら手順は、1.ホームディレクトリーのUserへLaravel4一式をアップロード、2.publicフォルダーをpublic_htmlへ移動、3.publicをproject1へリネームになります。

もちろん仮にproject1にしていますが、お好きな名前でどうぞ。

続いて、この構造を反映するために2ファイル修正します。

1.index.phpをエディターで開き、以下のように変更します。

...
require __DIR__.'/../../project1/bootstrap/autoload.php';
...
$app = require_once __DIR__.'/../../project1/bootstrap/start.php';
...

2.bootstrapフォルダー下のpaths.phpファイルをエディターで開き、publicフォルダーの位置と名前を修正します。

'public' => __DIR__.'/../../public_html/project1',

これだけです。

よく研究すればvendorを共通化して全プロジェクトから使用することも可能でしょう。ただ、Composerが名前空間を解決するためのファイルが太り、オートローディングの速度に影響が出るかも知れません。

まあ、色々と出来ますよ。やろうと思えば。意外と簡単です。