多版本PHP共存问题

  不同版本PHP对某些依赖包有版本要求,例如PHP-8.4要求OpenSSL-3,而PHP-7.4要求OpenSSL-1,如果只是简单升级或降级OpenSSL都会造成一个版本的PHP可以正常运行,而另一个无法运行。
 
  以Ubuntu-24为例(自带OpenSSL-3),在该版本系统下可以正常安装PHP-8.4,但是安装PHP-7.4会失败,因为PHP-7.4要求OpenSSL-1。
 
  此时必须先安装OpenSSL-1,注意要使用--prefix参数指定安装目录(假设安装在/programs/openssl-1.1目录),避免覆盖系统自带的OpenSSL-3。
 
  在编译PHP-7.4时需要加入参数:--with-openssl=/programs/openssl-1.1 CFLAGS="-I/programs/openssl-1.1/include" LDFLAGS="-L/programs/openssl-1.1/lib -Wl,-rpath=/programs/openssl-1.1/lib"
 
  编译安装好PHP-7.4后,再使用patchelf固化库路径到二进制文件,命令如下:
  root@localhost:~# apt install -y patchelf
  root@localhost:~# patchelf --print-rpath /programs/php-7.4/sbin/php-fpm # 此时还不会输出openssl-1.1目录
  root@localhost:~# patchelf --set-rpath /programs/openssl-1.1/lib /programs/php-7.4/sbin/php-fpm
  root@localhost:~# patchelf --print-rpath /programs/php-7.4/sbin/php-fpm # 此时将看到输出openssl-1.1目录

Copyright © 2026 码农人生. All Rights Reserved