编译安装一个扩展后,PHP 服务启动失败,网页全部无法访问。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,扩展与当前 PHP 版本不匹配,或依赖的其他扩展没有先加载,进程启动时加载失败导致整个服务起不来。

「扩展加载失败」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

php -m
tail -n 50 /var/log/php-fpm.log
# 禁用
# ;extension=problem.so

权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

具体做法是,查看启动错误日志;确认扩展版本与依赖;禁用后逐个启用定位。

最后用这个标准收尾,服务正常启动,仅保留必要扩展。

作者 9823189