⚠️ 重要提示:PHP 5.4 已过时且不再维护
在开始之前,请务必了解:PHP 5.4 版本已于 2025 年 1 月 1 日 正式停止支持,这意味着:

- 严重安全漏洞:它不再接收任何安全补丁,您的服务器将极易受到攻击。
- 性能和功能落后:缺少 PHP 7+ 版本带来的巨大性能提升和新特性。
- 兼容性问题:许多现代的 PHP 框架和库(如 Laravel, Symfony 等)已不再支持 PHP 5.4。
强烈建议您安装并使用最新的 PHP 7.x 或 8.x 版本。
如果您坚持要安装 PHP 5.4,通常是因为您需要维护一个非常老旧的、无法升级的项目,请务必将此服务器部署在隔离的网络环境中,不要将其暴露在公网上。
教程目标
在 Linux (以 CentOS 7 为例) 系统上,编译安装 Apache 2.4 和 PHP 5.4。
准备工作
- 一台干净的 Linux 服务器:本教程以 CentOS 7 64位 为例,对于 Ubuntu/Debian,包管理命令不同,但编译安装的原理类似。
- 拥有 root 权限:或者一个有
sudo权限的用户。 - 网络连接:用于下载源码包。
第一步:更新系统并安装编译依赖
登录到您的服务器,然后执行以下命令来更新系统并安装编译 PHP 和 Apache 所需的基本工具和库。

# 切换到 root 用户(如果还不是)
sudo su -
# 更新系统所有包到最新版本
yum update -y
# 安装编译工具和常用库
yum groupinstall "Development Tools" -y
yum install wget vim -y
# 安装 Apache 和 PHP 所需的依赖库
yum install -y \
libxml2-devel \
openssl-devel \
bzip2-devel \
libcurl-devel \
libjpeg-devel \
libpng-devel \
freetype-devel \
gmp-devel \
libmcrypt-devel \
readline-devel \
libxslt-devel \
systemd-devel
注意:libmcrypt 在 CentOS 7 的官方源中可能没有,您可能需要添加 EPEL 源或手动编译安装它,如果遇到此问题,可以搜索 How to install libmcrypt on CentOS 7 获取解决方案。
第二步:下载源码包
我们将从官方网站下载 Apache 和 PHP 的源码包。
# 创建一个目录用于存放源码 mkdir -p /usr/local/src cd /usr/local/src # 下载 Apache 2.4.x (我们选择一个较新的 2.4 版本,2.4.57) wget http://archive.apache.org/dist/httpd/httpd-2.4.57.tar.gz # 下载 PHP 5.4.x (我们选择 5.4.45,这是 5.4 系列的最后一个版本) wget http://php.net/distributions/php-5.4.45.tar.gz # 如果下载速度慢,可以尝试国内镜像 # wget http://mirrors.sohu.com/php/php-5.4.45.tar.gz
第三步:编译安装 Apache 2.4
-
解压并进入 Apache 目录
tar -zxvf httpd-2.4.57.tar.gz cd httpd-2.4.57
-
配置编译选项 这是关键步骤,我们定义了 Apache 的安装路径、模块支持等。
(图片来源网络,侵删)./configure \ --prefix=/usr/local/apache2 \ # 指定安装目录 --enable-so \ # 启用 so 模块,用于加载 DSO 模块 --enable-rewrite \ # 启用 URL 重写模块 --enable-ssl \ # 启用 SSL 模块 --with-pcre # 使用 PCRE 正则表达式库 -
编译和安装 这个过程可能需要几分钟时间。
make make install
第四步:编译安装 PHP 5.4
-
先退出 Apache 目录,然后解压并进入 PHP 目录
cd /usr/local/src tar -zxvf php-5.4.45.tar.gz cd php-5.4.45
-
配置编译选项 我们需要告诉 PHP 配置 Apache 的路径,以及启用常用模块。
./configure \ --prefix=/usr/local/php \ # PHP 安装目录 --with-apxs2=/usr/local/apache2/bin/apxs \ # 指向 apxs,用于生成 Apache 的模块 --with-mysql=mysqlnd \ # 使用 MySQL 原生驱动 --with-mysqli=mysqlnd \ # 使用 MySQLi 扩展 --with-pdo-mysql=mysqlnd \ # 使用 PDO MySQL 扩展 --with-config-file-path=/usr/local/php/etc \ # 配置文件存放目录 --enable-fpm \ # 启用 FPM (FastCGI Process Manager) --enable-mbstring \ # 启用多字节字符串支持 --enable-gd \ # 启用 GD 库 --with-jpeg-dir \ # GD 支持 JPEG --with-png-dir \ # GD 支持 PNG --with-freetype-dir \ # GD 支持 FreeType --with-zlib \ # 启用 Zlib 压缩 --with-curl \ # 启用 cURL --with-openssl \ # 启用 OpenSSL --enable-bcmath \ # 启用 BCMath 精确数学 --enable-sockets \ # 启用 sockets --enable-libxml \ # 启用 libxml2 --enable-sysvsem \ # 启用 System V 信号量 --enable-sysvshm \ # 启用 System V 共享内存 --enable-sysvmsg # 启用 System V 消息队列注意:
--with-mysql=mysqlnd是现代做法,使用 MySQL 本地数据驱动,如果您的系统安装了 MySQL 开发包,也可以使用--with-mysql=/usr这样的路径。 -
编译和安装 这个过程比编译 Apache 更耗时。
make make install
第五步:配置 Apache 以支持 PHP
-
复制 PHP 配置文件 PHP 源码包中提供了一个示例配置文件,我们将其复制到之前指定的配置目录中。
cp php.ini-development /usr/local/php/etc/php.ini
-
编辑 Apache 配置文件 使用
vim打开 Apache 的主配置文件。vim /usr/local/apache2/conf/httpd.conf
在文件中找到以下部分并进行修改:
-
修改
ServerName:取消注释并设置您的服务器域名或 IP。#ServerName www.example.com:80 ServerName 127.0.0.1:80
-
添加 PHP 类型支持:在
<IfModule mime_module>块内添加以下行,告诉 Apache 如何处理.php文件。<IfModule mime_module> # ... (其他已有内容) ... AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </IfModule> -
修改 DirectoryIndex:确保
index.php在默认页列表中。# ... (找到这一行) ... DirectoryIndex index.html # ... 修改为 ... DirectoryIndex index.html index.php
-
-
创建一个测试页面 在 Apache 的网站根目录(默认是
/usr/local/apache2/htdocs/)下创建一个info.php文件。echo "<?php phpinfo(); ?>" > /usr/local/apache2/htdocs/info.php
第六步:启动服务并测试
-
启动 Apache
/usr/local/apache2/bin/apachectl start
如果看到
(98)Address already in use: make sure no other web server is running on port 80错误,说明 80 端口被占用(可能是系统自带的 httpd 或 nginx),请先停止它们。 -
设置开机自启 (可选) 为了方便,可以创建一个简单的 systemd 服务文件。
vim /etc/systemd/system/httpd.service
粘贴进去:
[Unit] Description=The Apache HTTP Server After=network.target [Service] Type=forking ExecStart=/usr/local/apache2/bin/apachectl start ExecReload=/usr/local/apache2/bin/apachectl graceful ExecStop=/usr/local/apache2/bin/apachectl stop KillSignal=SIGCONT PrivateTmp=true [Install] WantedBy=multi-user.target
然后启用并启动服务:
systemctl daemon-reload systemctl enable httpd systemctl start httpd
-
测试 打开浏览器,访问
http://您的服务器IP地址/info.php。如果您能看到一个包含大量 PHP 配置信息的页面,恭喜您,Apache + PHP 5.4 环境搭建成功!
如果看不到,请检查:
- 防火墙是否允许 80 端口访问。
- SELinux 是否已禁用或正确配置(新手建议先
setenforce 0临时关闭)。 - 查看 Apache 的错误日志:
/usr/local/apache2/logs/error_log。
第七步:后续配置
- 配置 PHP-FPM:虽然我们编译时启用了
--enable-fpm,但 Apache 默认是作为mod_php模块加载 PHP 的,性能不如 PHP-FPM,要切换到 FPM 模式,需要卸载mod_php,然后配置 Apache 将.php请求通过ProxyPass或mod_fastcgi交给 PHP-FPM 处理,这比mod_php配置更复杂,对于老旧的 PHP 5.4,使用mod_php是最简单直接的方式。 - 配置虚拟主机:您可以在
httpd.conf中使用<VirtualHost>指令来配置多个网站。 - 安装扩展:如果需要其他 PHP 扩展(如
memcache,redis等),需要下载它们的源码,然后使用phpize和./configure --with-php-config=/usr/local/php/bin/php-config ... make && make install来编译安装。
您已经成功在 CentOS 7 上手动编译安装了 Apache 2.4 和 PHP 5.4,再次强调,这是一个过时且不安全的环境,请谨慎使用,并尽快计划将您的项目升级到现代的 PHP 版本。
