【Laravel8】サブディレクトリで動作させるためにコントローラー類のパスを変えた記録

Laravelではアプリケーションのディレクトリ内にappやpublicが一緒に入っています。

サブディレクトリでLaravelのアプリを動かしたいけど、public以下以外のapp等は公開ディレクトリに置きたくない!

という状況になり、数カ所パスの書き換えや処理の追加をしました。

パスのイメージ

以下のような構成になるイメージで説明を書いています。


┝public(ドキュメントルート)/XXX/index.php
┝ZZZ/app等

実際に書き換えた内容

public/index.php

以下のように目に付くパスを変更します。

require DIR.’/../storage/framework/maintenance.php’;

require DIR.’/../../XXX/storage/framework/maintenance.php’;

bootstrap/app.php

// 中略
$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class,
    App\Exceptions\Handler::class
);

// ドキュメントルート変更(追加分)
$app->bind('path.public', function () {
    return base_path().'/../public/XXX';
});

// 中略
return $app;

public_path()メソッドで取得できる内容を変えるため、上記の追加分を足しています。

webpack.mix.js

npm run devを実行してpublic内にapp.cssとapp.jsが出力されます。

そのままだとwebpack.mix.jsがあるディレクトリに作成されてしまいます。

これをpublic/XXX/js/app/js、public/XXX/js/app/css以下に出力されるようにします。

mix.setPublicPath('../public/XXX/');
mix.js('resources/js/app.js', 'js');
mix.css('resources/css/app.css', 'css');

対応は以上です。

僕のほうでは小さなシステムしか作っていませんが、上記の対応で動作しています。

Good Luck!

コメント

タイトルとURLをコピーしました