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!
コメント