Laravelのディレクトリ構造を変更する(Laravel 10)

下記の記事では、Laravel9に対応したディレクトリ構造の変更法を説明していましたが、Laravel10では利用できなくなったため、Laravel10でのディレクトリ構造の変更方法を説明します。

Laravelのディレクトリ構造を変更する

目的とするディレクトリ構造

laravelというディレクトリにソースを格納し、/var/www/public/をドキュメントルートとするディレクトリ構造を目指します。

/var/www/
 ├ logs/ <もともとあるディレクトリなど>
 │ ├ ...
 │ └ access-yymmdd.log
 ├ laravel/ <Larabelのソースを格納するディレクトリ>
 │ ├ app/
 │ ├ bootstrap/
 │ ├ config/
 │ ├ database/
 │ ├ node_modules/
 │ ├ resources/
 │ ├ routes/
 │ ├ storage/
 │ ├ tests/
 │ ├ vendor/
 │ ├ .editorconfig
 │ ├ .env
 │ ├ .gitattributes
 │ ├ .gitignore
 │ ├ artisan
 │ ├ composer.json
 │ ├ composer.lock
 │ ├ manifest.json
 │ ├ package-lock.json
 │ ├ package.json
 │ ├ phpunit.xml
 │ ├ README.md
 │ └ vite.config.js
 └ public/ <DocumentRoot>
   ├ build/
   ├ .htaccess
   ├ favicon.ico
   ├ index.php
   └ robots.txt

作業手順

手順といってもファイルの移動、3ファイルの更新で完了します。

ファイルの移動

laravelのディレクトリを作成し、publicのディレクトリ以外のディレクトリとファイルをlaravelのディレクトリに移動します。

public/index.phpの書き換え

public/index.phpに記載のあるパス(3か所)にlaravel/を追記します。

public/index.php
if (file_exists($maintenance = __DIR__.'/../laravel/storage/framework/maintenance.php')) {
    require $maintenance;
}
public/index.php
require __DIR__.'/../laravel/vendor/autoload.php';
public/index.php
$app = require_once __DIR__.'/../laravel/bootstrap/app.php';

bootstrap/app.phpの書き換え

bootstrap/app.phpでpublicパスを上書きします。
下記のコードを return $app;する前に追記します。

bootstrap/app.php
$app->usePublicPath(realpath(base_path('../public')));

viteの変更

vite.config.jsのlaravel-vite-pluginにpublicDirectoryを追加します。

vite.config.js
export default defineConfig({
    plugins: [
        laravel({
            publicDirectory: '../public',
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
    ],
});