一直是在用 php-fpm 内置的 chroot 功能在跑手头的几个 php 论坛站点。
但是最近将整个 chroot 环境迁移至新的地方之后,出现问题了:
有一个论坛一直是返回 502 状态码。看了下,发现 dmesg 输出有一些信息:
...
[444346.942769] php-fpm[13096]: segfault at 1fae98fc ip 00007f53655429df sp 00007f5347847d80 error 6 in libresolv-2.17.so[7f5365537000+16000]
[444500.294150] php-fpm[13149]: segfault at 1fae98fc ip 00007f53655429df sp 00007f5347847d80 error 6 in libresolv-2.17.so[7f5365537000+16000]
[444500.407066] php-fpm[13151]: segfault at 1fae98fc ip 00007f53655429df sp 00007f5347c07d80 error 6 in libresolv-2.17.so[7f5365537000+16000]
...
chroot 里面的根目录结构是以前从 CentOS 7.1 拷贝创建的,看来和 7.2 不兼容。libresolv 里面发生了 segfault,说明问题应该是和 DNS 解析有关。
试了几次之后,把 7.2 的 libnss 相关 so 文件拷贝到 chroot 里面后,问题解决了。以防万一,接下来干脆把 chroot 里面的所有 so 更新了一次。