新規のLaravelのプロジェクトは、以下の実行で作成できます。
$ laravel new blog
/blogのディレクトリが作成され、そこには以下のようなディレクトリやファイルが作成されます。
app/
bootstrap/
config/
database/
public/
resources/
storage/
tests/
vendor/
artisan
composer.json
composer.lock
gulpfile.js
package.json
phpunit.xml
readme.md
server.php
/publicのディレクトリがウェブサイトのルートとなる仮定で、その他のディレクトリはユーザーからはアクセスできないという仮定なのですが、
しかし、現実は使用するサーバーの都合により、このpublicのディレクトリを違う場所に移動する必要があります。
例えば、
public
を
/usr/www/demo/webdocs
に、
その他のディレクトリやファイルは、ウェブがアクセスできない以下に
/usr/www/demo/blog
この変更に必要な設定は、Laravelではとても簡単です。
public/index.php、移動後では、/usr/www/demo/webdocs/index.phpを編集するだけです。
index.php
...
require __DIR__.'/../bootstrap/autoload.php';
...
$app = require_once __DIR__.'/../bootstrap/app.php';
..
を
index.php
...
require '/usr/www/demo/blog/bootstrap/autoload.php';
...
$app = '/usr/www/demo/blog/bootstrap/app.php';
..
と書き換えるだけです。
しかし、ここで1つ問題は、Laravel定義のpublic_path関数が返す値が、
/usr/www/demo/blog/public
となります。
これを修正するには、
index.php
...
require '/usr/www/demo/blog/bootstrap/autoload.php';
...
$app = '/usr/www/demo/blog/bootstrap/app.php';
$app->bind('path.public', function() {
return __DIR__;
});
..
と、path.publicを設定する必要あります。
それにより、public_path関数が返す値は、
/usr/www/demo/blog/webdocs
となります。