文件:php2shell-5.6.40.patch、build-php2shell-56.sh、verify-cutover.sh
php2shell-5.6.40.patch.zip
php2shell-5.6.40.patch.zip
verify-cutover.sh.zip

约定(按需替换):

  • 源码目录:~/php-5.6.40
  • 旧安装:/usr/local/php
  • 新安装:/usr/local/php-5.6.40-php2shell

1. 试打补丁

patch -p1 --dry-run -d ~/php-5.6.40 < php2shell-5.6.40.patch

四个文件都 checking file 且无报错 → 继续。

2. 编译到新目录

chmod +x build-php2shell-56.sh verify-cutover.sh
./build-php2shell-56.sh ~/php-5.6.40

脚本会:复用现有 configure 参数(prefix 和配置路径自动换成新目录)→ 复制源码到 /tmp 编译 → 自检 OOM 退出码 → 装到新 prefix。

自检看到 退出码: 1 才继续;255 说明补丁没生效。

3. 同步配置文件

cp /usr/local/php/etc/php.ini       /usr/local/php-5.6.40-php2shell/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf  /usr/local/php-5.6.40-php2shell/etc/php-fpm.conf

新 prefix 的配置路径已在第 2 步指向新目录,两份文件都必须存在。

4. 检查配置

/usr/local/php-5.6.40-php2shell/sbin/php-fpm -t

必须 test is successful。

5. 切换

停旧 FPM / Apache,改 systemd 或启动脚本指向 /usr/local/php-5.6.40-php2shell,然后重启。

6. 验证

./verify-cutover.sh /usr/local/php /usr/local/php-5.6.40-php2shell

全部 OK 即完成。

回滚

启动脚本改回 /usr/local/php

标签: none