修复
- 起因
今天戳开自己博客突然发现只显示出了Ngnix的默认错误界面, 而我挂在同一服务器上的seafile和gitea都没有问题, 就意识到大概是PHP挂了.
- 定位问题
上服务器用ps aux | grep php
一看, 果然是PHP没启动起来, 尝试重新启动发现并没有效果.
于是systemctl status php-fpm
看看发生了什么, 第一行大概提示的是找不到mbstring
.
一开始感觉只要把这个文件补上大概就可以了, 于是pacman -F mbstring
看看.........没有
我有点不信邪...然后pacman -Fx ".*mbstring.*"
, 为啥mbstring.h
的头文件都有但是没有mbstring.so
啊不科学
网上查了查发现, Arch的PHP在打包的时候会加上--enable-mbstring
参数将mbstring嵌入到PHP的可执行文件里面去, php -m
也验证了这一点...
那你还提示个球啊摔..............
最后发现是, 我之前在php.ini
里面加了句extension=mbstring
, 然后PHP就会尝试去加载这个外部模块...emmmmmm
以及...其实...他就是只是报个错而已...对于正常启动没有任何影响
- 重新定位问题
修改了php.ini
以后, php-fpm.service
还是启动不起来, 现在的报错变成了这样
怎么会没有权限呢? 我去看了一眼/run/php-fpm/php-fpm.sock
的权限, root/group都是root, 然后看了看php-fpm.service
的内容也没有指定用户和组, 那就应该是以root权限启动的啊
然后我顺手看了一眼php-fpm.conf.d/www.conf
... 咦...有个pacnew文件, 是更新了啥吗? 然后我就懂了...
所以 问题大概是PHP-FPM更新以后改进了权限运行策略...emmmmmm
于是 把这部分照着pacnew修改一下之后就好了= =
总结
滚动更新一大缺点就是...上游更新可能导致服务莫名其妙就被更挂了...
当然, 我的第一反应也是肯定更新了啥把php更挂了, 然后看了看官方的News啥也没提, 重新安装了几遍包也没啥用
........................嗯 好吧
顺带一提我的PHP-FPM版本是7.4.0-2
我一般滚包看到有 pacnew 滚完会先去合并下文件