Laravel4、ドキュメントルートが変更できない場合

タグ: Laravel4  

共有サーバーの中にはドキュメントルートが変更できないものもあり、その状況じゃ使えないとツイートされていました。

実際には、簡単に使えます。元ネタは以下の英語サイトです。(正確に言えば、以下のサイトを参照しなくても、コメントを読んでもらったり、コードを追いかけてもらえば、何をすれば良いか分かるでしょう。)

以下の手順で、インストールルートをドキュメントルートへ変更できます。

1.publicフォルダーの中のファイルを全部、一つ上のインストールルートへ移動します。.htaccessも忘れずに!

2.ルートへ移動したindex.phpをエディターで開き、以下の2箇所を変更します。

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

3.bootstrap/start.phpをエディターで開き、パブリックディレクトリーの位置を変更します。

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

これだけです。後はインストールルートをドキュメントルートとしてアクセスしてください。

注意

ちょっと前のCMSや一部のフレームワークには、この様なフォルダー階層のものがありました。Laravelに限らず、他の最近のフレームワークでは、こうしたフォルダー階層を取っているものは少ないです。

理由は単純で、セキュリティーです。

index.phpより深い階層にコードがあるため、このままでは外部からのアクセスでコードが丸見えになってしまう可能性があります。

そこで最近のフレームワークやCMSはpublicをコードが置かれる階層と同じ、もしくは低い場所に置くのがデフォルトになっています。ドキュメントルートを変更し、publicを指定してもらうスタイルが主流です。

追記:この記事を書いた頃、ドキュメントにもこれに関する話がちらっと追加されました。