无SSH权限下如何通过URL解除Laravel站点维护模式?
解决Laravel维护模式下无法通过路由解除的问题
方案1:让解除维护的路由绕过维护模式拦截
Laravel的维护模式中间件会默认拦截所有请求,你可以在维护模式中间件中添加例外路由,让artisan/site-up不受拦截:
- 对于Laravel 6及以上版本,找到
app/Http/Middleware/PreventRequestsDuringMaintenance.php(若该文件不存在,可从框架核心目录复制到该路径后修改),修改$except数组:
protected $except = [ 'artisan/site-up', // 可选:可加入artisan/site-down,避免维护模式下无法再次触发(按需添加) ];
- 对于Laravel 5.x版本,修改
app/Http/Middleware/CheckForMaintenanceMode.php的$except数组即可。
配置完成后,再进入维护模式时,访问https://myweb.local/artisan/site-up就能正常执行Artisan::call('up')解除维护。
方案2:创建独立的公共文件直接解除维护
如果不想修改中间件,可在项目public目录下创建独立PHP文件(比如site-up.php),内容如下:
<?php require __DIR__.'/../vendor/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; // 执行artisan up命令 $kernel = $app->make(Illuminate\Contracts\Console\Kernel::class); $kernel->call('up'); echo "站点已成功解除维护模式";
之后直接访问https://myweb.local/site-up.php即可解除维护,该文件不受Laravel路由和维护模式中间件拦截,适合应急场景。
方案3:触发维护模式时预先允许解除路由
若你是通过路由执行Artisan::call('down')进入维护模式,可在调用时添加--allow参数,预先将解除路由加入白名单:
Artisan::call('down', [ '--allow' => 'artisan/site-up', ]);
这样在进入维护模式的同时,该路由就被允许访问,后续直接访问即可解除维护。
内容的提问来源于stack exchange,提问作者almiros
相关产品推荐
相关产品推荐

