结论:编译安装的 PHP 打补丁要先拿到对应版本的源码,打完补丁后重新编译安装,不能直接改已装好的二进制文件。

① 先用 php -v 确认当前运行的 PHP 版本,去官方源码仓库下载完全一致的版本包,解压后进入源码目录,版本不一致补丁基本会打失败。

② 把补丁文件放到源码根目录,执行 patch -p1 < 补丁文件名,看到全部 hunk 成功才算干净应用;如果提示 hunk failed,说明版本或路径不匹配,先看 .rej 文件再决定是手工合并还是换补丁版本。

③ 打完补丁后按原来的编译参数执行 ./configure、make、make install,编译参数最好从 php -i 里的 Configure Command 抄回来,避免少扩展。

④ 装完重启 PHP-FPM 或 Web 服务,再用 php -v 和 php -m 复核版本与扩展是否正常,并在测试环境验证补丁效果后再上生产。