Laravel5.7メモ:publicをpublic_htmlにリネームしたい

サーバー設定を変更できない!publicじゃなくてpublic_htmlをドキュメントルートにしたい!そんな時のTipsです。

webpack.mix.jsの出力先を変更する

これを忘れてると、npm run devとかでビルドしたアセットがpublicに出力されちゃいます。忘れないようにしましょう。

let mix = require('laravel-mix');

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel application. By default, we are compiling the Sass
 | file for the application as well as bundling up all the JS files.
 |
 */
mix.setPublicPath('public_html/'); //これを追加
mix
    .js(['resources/assets/js/app.js'], 'public_html/js/app.js') //ここのパスも書き換える
    .sass('resources/assets/sass/app.scss', 'css');

if (mix.inProduction()) {
    mix.version();
}

bootstrap/app.php にて public のパスを書き換える

これを忘れてると、public_path() の関数が常にデフォルトのpublicを返してきます。public_htmlで返して欲しいのに、なんでいっつもpublicなの!!ムキーってなります。このページを参考にしました。

<?php

/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Laravel application instance
| which serves as the "glue" for all the components of Laravel, and is
| the IoC container for the system binding all of the various parts.
|
*/

$app = new Illuminate\Foundation\Application(
    realpath(__DIR__.'/../')
);

/*
|--------------------------------------------------------------------------
| Bind Important Interfaces
|--------------------------------------------------------------------------
|
| Next, we need to bind some important interfaces into the container so
| we will be able to resolve them when needed. The kernels serve the
| incoming requests to this application from both the web and CLI.
|
*/

$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Console\Kernel::class,
    App\Console\Kernel::class
);

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

//これを追加!
$app->bind('path.public', function () {
    return base_path("public_html");
});

/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/

return $app;

この記事が気に入ったらサポートをしてみませんか?