1. 前言
在渗透测试或搭建靶场(如 Pikachu、Vulhub、复现老版本漏洞)时,经常需要使用 PHP 5.4、5.2 等早期版本。但Ubuntu 22.04系统自带PHP 8+,如果直接安装旧版本会造成冲突,也可能破坏整个 LAMP 环境。因此,本文章将演示如何在Ubuntu 22.04中创建一个完全独立、不影响系统 PHP环境的PHP 5.4(FPM)运行空间。
安装完成后最终能达到的效果:
- Apache2 默认仍然使用系统自带PHP(如 PHP8)
- 需要时可以用命令启动独立PHP 5.4-FPM
- 两个版本可以同时存在、互不影响
- 可用于Pikachu靶场、Override类题目的环境复现
2. 安装步骤
2.1 准备系统依赖
#更新本地的 APT 软件包索引
sudo apt update
#安装一连串的开发工具和库,并自动确认
sudo apt install -y gcc g++ make autoconf bison re2c \
libxml2-dev libssl-dev libcurl4-openssl-dev \
libjpeg-dev libpng-dev libfreetype6-dev \
libzip-dev pkg-config libsqlite3-dev \
libonig-dev libmcrypt-dev libxml2-dev
2.2 下载PHP5.4 源码
#切换到用户主目录
cd ~
#从互联网下载 PHP 5.4.45 的源码压缩包
wget https://museum.php.net/php5/php-5.4.45.tar.gz
#解压
tar -zxvf php-5.4.45.tar.gz
cd php-5.4.45
2.3 配置编译参数
为了不影响系统环境,将PHP全部安装到/opt/php54目录下
#执行PHP源码的配置脚本,用于检查系统环境、检测库、生成Makefile
./configure \
--prefix=/opt/php54 \
--with-fpm \
--with-mysqli \
--with-pdo-mysql \
--with-openssl \
--with-zlib \
--enable-mbstring \
--enable-sockets \
--enable-fpm \
--with-curl \
--with-gd
2.4 编译并安装
#构建命令,读取./configure生成的Makefile,开始使用多线程并行编译编译源码
make -j$(nproc)
#编译完成后,将最终产物安装到系统指定目录
sudo make install
2.5 创建配置文件
#创建配置文件php.ini
sudo cp php.ini-development /opt/php54/etc/php.ini
2.6 创建php-fpm.conf
sudo nano /opt/php54/etc/php-fpm.conf
删除原内容,nano:按 Ctrl+A,再按 Ctrl+K 多次。
替换为以下最简可用配置:
[global]
pid = /opt/php54/var/run/php-fpm.pid
error_log = /opt/php54/var/log/php-fpm.log
include=/opt/php54/etc/php-fpm.d/*.conf
保存退出Ctrl+O → 回车 → Ctrl+X
2.7 创建www.conf【FPM池配置】
sudo mkdir -p /opt/php54/etc/php-fpm.d
sudo nano /opt/php54/etc/php-fpm.d/www.conf
写入:
[www]
user = www-data
group = www-data
listen = 127.0.0.1:9054
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
2.8 测试配置
sudo /opt/php54/sbin/php-fpm -t -y /opt/php54/etc/php-fpm.conf
配置成功则输出:
NOTICE: configuration file ... test is successful
2.9 启动独立PHP5.4
sudo /opt/php54/sbin/php-fpm -R -y /opt/php54/etc/php-fpm.conf
启动成功则输出:
NOTICE: fpm is running, pid ...
NOTICE: ready to handle connections
2.10 把PHP5.4-FPM端口绑定到虚拟主机
在 Ubuntu 里,Apache 虚拟主机(vhost)文件一般在:/etc/apache2/sites-available/
执行:
sudo nano /etc/apache2/sites-available/000-default.conf
打开后会看见类似:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
把下面内容插入到<VirtualHost *:80> 内部,一般放在 DocumentRoot 后面即可:
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://127.0.0.1:9054"
</FilesMatch>
保存退出:Ctrl+O,回车,Ctrl+X
2.11 启动必要模块
Apache 使用 PHP-FPM 需要proxy_fcgi支持:
sudo a2enmod proxy
sudo a2enmod proxy_fcgi
sudo a2enmod setenvif
重启Apache:
sudo systemctl restart apache2
2.12 检查是否进入PHP5.4模式
ps aux | grep php-fpm
访问:http://你的IP/info.php
如果看到 PHP5.4,就说明已经进入PHP5.4模式
3. 总结
想用PHP5.4→启用PHP5.4-FPM:
sudo /opt/php54/sbin/php-fpm -R -y /opt/php54/etc/php-fpm.conf
想让Apache使用 5.4 → 在虚拟主机里加SetHandler指向9054端口
想切回系统默认PHP → 删除或注释掉FilesMatch配置,并重启Apache

2809

被折叠的 条评论
为什么被折叠?



