今天回到宿舍后正准备做作业,突然收到通知说社团的皮肤站炸了,于是立即上线查看情况
排查过程
首先我查看Apache2有没有出问题
systemctl status apache2
Apache2正常运行,然后查看php8.1-fpm有没有问题
systemctl status php8.1-fpm
发现都没问题,我决定先查看Apache2的log
tail -n 200 /var/log/apache2/error.log
得到以下内容:
[Mon Sep 23 11:21:16.936325 2024] [php:error] [pid 159026] [client 115.27.161.58:55358] PHP Fatal error: Declaration of Illuminate\Http\Response::setContent($content) must be compatible with Symfony\Component\HttpFoundation\Response::setContent(?string $content): static in /var/www/blessing-skin/plugins/oauth/vendor/illuminate/http/Response.php on line 48, referer: https://mc.lcpu.dev/sw.js?v6
[Mon Sep 23 11:21:16.937105 2024] [php:error] [pid 159026] [client 115.27.161.58:55358] PHP Fatal error: Uncaught Error: Class “Illuminate\Http\Response” not found in /var/www/blessing-skin/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:784\nStack trace:\n#0 /var/www/blessing-skin/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(650): Illuminate\Foundation\Exceptions\Handler->toIlluminateResponse()\n#1 /var/www/blessing-skin/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(556): Illuminate\Foundation\Exceptions\Handler->prepareResponse()\n#2 /var/www/blessing-skin/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(473): Illuminate\Foundation\Exceptions\Handler->renderExceptionResponse()\n#3 /var/www/blessing-skin/app/Exceptions/Handler.php(38): Illuminate\Foundation\Exceptions\Handler->render()\n#4 /var/www/blessing-skin/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(218): App\Exceptions\Handler->render()\n#5 /var/www/blessing-skin/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(195): Illuminate\Foundation\Bootstrap\HandleExceptions->renderHttpResponse()\n#6 /var/www/blessing-skin/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(231): Illuminate\Foundation\Bootstrap\HandleExceptions->handleException()\n#7 /var/www/blessing-skin/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(255): Illuminate\Foundation\Bootstrap\HandleExceptions->handleShutdown()\n#8 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}()\n#9 {main}\n thrown in /var/www/blessing-skin/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php on line 784, referer: https://mc.lcpu.dev/sw.js?v6
很明显是php的问题,如果再仔细阅读的话,可以发现是/var/www/blessing-skin/plugins/oauth/vendor/illuminate/http/Response.php
导致了问题,由于我没有仔细阅读log,所以第一时间没有发现问题所在,好在有群友的帮助下,最后还是定位到了这个问题。可以看出来这个文件位于plugins
目录下,而plugins
目录是Blessing-skin中安装插件后插件所在的目录,根据目录名可以得知这是一个关于oauth的插件,因为我对php不熟,所以我大胆推测直接删除这个目录可以直接解决问题,于是群友将该插件移出后端,最后皮肤站成功上线。我访问皮肤站后重新安装了oauth插件,成功复现问题。因为这个插件已经安装了一段时间,可能是服务器自动更新了最新版本的插件导致兼容性问题,所以暂时不安装这个插件规避问题。
总结与反思
在查看完Apache2的log之后,我还进行了很多操作,比如说尝试更新后端的依赖、查看php的log、甚至是查看php镜像站状态等等,但其实仔细阅读log就能一下发现问题所在,所以仔细阅读log非常重要,可以节省很多时间和精力。