Laravel deploy

Через FTP клиент переношу файлы сайта таким образом...

Все папки в корень на одном уровне с папкой “public_html” в папку “public_html” переносим содержимое папки “public”

В файле index.php меняем путь public_path() для “public_html”, для этого дописываем после объявления $app;

index.php
$app->bind('path.public', function() {
  return base_path().'/public_html';
});

Так же желательно прописать путь к public_html в настройках vite.config.js

vite.config.js
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    build: {
        outDir: './public_html/build' // Добавляем путь для билда
    },
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
            publicDirectory: '/public_html', // указываем путь до public_html
        })
    ],
    server: {
        hmr: {
            host: 'localhost'
        },
        port: 3000,
        host: '0.0.0.0',
    },
});

и в настройках elfinder прописываем пути через public_path()

elfinder.php
return array(
    'dir' => ['upload'],
    'disks' => [],
    'route' => [ 'prefix' => 'elfinder', 'middleware' => null,],
    'access' => 'Barryvdh\Elfinder\Elfinder::checkAccess',
    'roots' => null,

    'options' => array(
        'roots' => array( array( 'driver' => 'LocalFileSystem', 'path' =>  public_path(), 'URL' =>  public_path() ), ) ),

    'root_options' => array(),
);

Путь для сохранения картинок будет такого вида-/home/f0634421/domains/f0634421.xsph.ru/public_html

загруженная картинка будет доступна по ссылке такого вида - http://f0634421.xsph.ru/upload/photo1638904712.jpeg

Можно создать simlink (символическую ссылку для сторедж в публичную папку) без консоли, просто определив роут в котором пропишем команду, и перейдём по его адресу:

Route::get('/foo', function () {
    Artisan::call('storage:link');
});

Last updated