最近缅A丢失一辆车,2024年才开始几个工作日,打工人根本无心上班……

有个很多年的关系户跑来说订阅不到节点了,问我这个搞技术的还能不能干?虽然缅A丢了车钱,但咱不能丢技术,虽然关系户并没有赞助半毛钱一直蹭着俺的小鸡鸡!

然后手贱开始了

虽然自己用着没什么问题,但有人提意见就干脆升级把程序,以转移部分缅A赔钱之苦,结果 php composer.phar update -vvv 时报错,后台也登录不进去了:

1
2
PHP Fatal error:  Uncaught RuntimeException: A facade root has not been set. 
in /www/wwwroot/v2board/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:258

翻出第258行的代码,也不知道 getFacadeRoot 是个啥:

1
2
3
4
5
6
7
8
9
10
public static function __callStatic($method, $args)
{
$instance = static::getFacadeRoot();

if (! $instance) {
throw new RuntimeException('A facade root has not been set.');
}

return $instance->$method(...$args);
}

溯源

查阅了大量资料,258行 Uncaught RuntimeException 的问题都不少,其中 这个记录 最贴切:

Runtime Exception Not Caught: Facade Root Not Set in Facade.php:258 During Laravel 7 Upgrade

但翻来翻去都是教怎么改代码,怎么用正确的函数,很明显这不适合本次问题,因为半吊子工程师这些次提交改的代码并没有触及那一块。

然后看到一篇 Laravel框架提示 A facade root has not been set

检查下 config 目录里面的文件,新增或者修改了什么,把语法错误找出来修复

想起最开始那位仁兄说不能订阅,确实改了下订阅地址,于是去翻 v2board.php,看花老眼终于发现在文件的倒数位置:

1
2
3
  'subscribe_path' => '/xxxx',
);'/xxxx',
);

这个配置没动过,但多出来这部分错乱配置可能是 v2board 自动保存机制的问题。将错误修正后升级果然一气呵成:

1
2
  'subscribe_path' => '/xxxx'
);