Редактировать: Принятая проблема на GitHub https://github.com/octobercms/october/issues/2830
Я использую OctoberCMS, которая основана на фреймворке Laravel PHP.
(Я новичок в обоих).
В конечном счете, я пытаюсь составить максимально возможную часть процесса обновления сайта. То есть, обновить / обновить тестирование и живые сайты и загрузить мой новый код. Это предполагает возможность перевода сайта в режим обслуживания из командной строки.
Каталог верхнего уровня для моего сайта (/var/www/website/
) содержит сценарий php ремесленника.
Бег php artisan list
Я получил:
Available commands:
down Put the application into maintenance mode
up Bring the application out of maintenance mode
В бэкэнде OctoberCMS я могу перевести внешний интерфейс в режим обслуживания, и выбранная страница обслуживания отображается, как и ожидалось.
Когда я вхожу php artisan down
в консоли я получаю Application is now in maintenance mode.
, как и ожидалось. Но когда я перезагружаю сайт, я получаю следующую ошибку:
К сожалению, произошла необработанная ошибка. Пожалуйста, смотрите детали ниже.
.../vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php line 41
Тип: Не определено
Исключение:Symfony\Component\HttpKernel\Exception\HttpException
\*
\* @throws \Symfony\Component\HttpKernel\Exception\HttpException
*/
public function handle($request, Closure $next)
{
if ($this->app->isDownForMaintenance()) {
throw new HttpException(503);
}
return $next($request);
}
Похоже, что Laravel / Symfony делает то, что должен, и бросает 503 Service Unavailable
, но нечего ловить и рендерить страницу обслуживания.
Итак, два вопроса
1) Это ошибка? Если так, то в Ларавеле или октябре? Или я что-то не так сделал — настройка конфига …?
2) Предполагая, что это не будет исправлено в ближайшее время, как и где я должен поймать HttpException(503)
и дать страницу обслуживания?
Есть то, что может быть ответом в Stackoverflow > '503 can't be overridden in L5.1'
, который, кажется, предлагает редактирование / переопределение public function handle($request, Closure $next)
с try/catch/return-if-503
последовательность. Но стоит ли переопределять функцию CMS / framework? Если да, то как и где?
я прочитал OctoberCMS> docs> services> Ошибки & логирование и, несмотря на надежду на более простое решение, я бы создал плагин для решения проблемы, если это лучший / единственный / идеальный способ. Хотя создание плагина для отлова того, что должно быть уже поймано, кажется излишним.
Это выглядит как способ сделать это Laravel — передавайте аргументы php ремесленнику, но я не уверен, чтобы попытаться это.
Сервер под ключ LAMP 14.1
Октябрьская система сборки 414
php --version
PHP 5.6.30-0+deb8u1 (cli) (built: Feb 8 2017 08:50:21)
php artisan --version
Laravel Framework version 5.1.46 (LTS)
Задача ещё не решена.
Других решений пока нет …