|
||||||||
|
Перенос публичной директории Laravel 8, изменение пути public директорииНа каждом web-сервере структура директорий-папок может отличаться и стандартная иерархия папок фреймворка Laravel 8 может быть неудобной или же не подходить вовсе. К примеру рассмотрим такое построение директорий на web-сервере: - domain.example.com - public_html - log - otherdirs Если оставить структуру папок Laravel 8 без изменений, и разместить проект в директории domain.example.com, то существующие имена подпапок могут конфликтовать (иметь идентичные названия) с папками проекта на Laravel. Да и разобраться по прошествии времени, какие папки относятся к Ларавел, а какие - часть структуры web-сервера, будет не просто. Решение проблемы - разместить приватную, недоступную напрямую через web-сервер часть скриптов фреймворка, в папке laravel: - domain.example.com - public_html - laravel - log - otherdirs В официальной документации Laravel 8 нет информации, как это сделать, но в переносе public-директории фреймворка нет никаких принципиальных сложностей. Установка Laravel 8Установка Laravel 8 осуществляется в директорию ../domain.example.com/laravel. Как установить Laravel 8 читайте в После установки структура каталогов и файлов должна выглядеть так: - domain.example.com - public_html - laravel - app - bootstrap - config - database - public - resources ... .editorconfig .env .env.example ... Теперь все файлы из каталога domain.example.com/laravel/public переносим в папку domain.example.com/public_html. Изменение в файле index.php из публичной директорииЧтобы подкорректировать пути в файле domain.example.com/public_html/index.php для удобства можно добавить константу LARAVEL_PRIVATE_PATH, в примере ниже - строка №7:
Далее, в строках 20, 35 и 48 необходимо заменить пути: ... if (file_exists($maintenance = LARAVEL_PRIVATE_PATH.'/storage/framework/maintenance.php')) { ... require LARAVEL_PRIVATE_PATH.'/vendor/autoload.php'; ... $app = require_once LARAVEL_PRIVATE_PATH.'/bootstrap/app.php'; Обновление файла server.phpВ начало файла server.php, расположенный в корне приватной директории Laravel 8 (domain.example.com/laravel/server.php) сразу после комментария добавляем константу LARAVEL_PUBLIC_PATH: define('LARAVEL_PUBLIC_PATH', dirname(__DIR__).'/public_html'); Далее корректируем пути в двух строках: if ($uri !== '/' && file_exists(LARAVEL_PUBLIC_PATH.$uri)) { return false; } require_once LARAVEL_PUBLIC_PATH.'/index.php'; Обновление файла bootstrap/app.phpНеобходимо закомментировать или удалить строки с присвоением объекта переменной $app и написать немного своего кода: //$app = new Illuminate\Foundation\Application ( // $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__) //); class MyApp extends Illuminate\Foundation\Application { public function publicPath() { return dirname(__DIR__).'/public_html'; } } $app = new MyApp( $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__) );
Опубликовано: 2022/02/07
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/php.php?txt=735" target="_blank">Перенос публичной директории Laravel 8, изменение пути public директории</a> 1151
Добавить комментарий
|