⚠️ 重要提示:PHP 5.4 已过时且不再维护

在开始之前,请务必了解:PHP 5.4 版本已于 2025 年 1 月 1 日 正式停止支持,这意味着:

apache php5.4安装教程
(图片来源网络,侵删)
  1. 严重安全漏洞:它不再接收任何安全补丁,您的服务器将极易受到攻击。
  2. 性能和功能落后:缺少 PHP 7+ 版本带来的巨大性能提升和新特性。
  3. 兼容性问题:许多现代的 PHP 框架和库(如 Laravel, Symfony 等)已不再支持 PHP 5.4。

强烈建议您安装并使用最新的 PHP 7.x 或 8.x 版本。

如果您坚持要安装 PHP 5.4,通常是因为您需要维护一个非常老旧的、无法升级的项目,请务必将此服务器部署在隔离的网络环境中,不要将其暴露在公网上。


教程目标

在 Linux (以 CentOS 7 为例) 系统上,编译安装 Apache 2.4 和 PHP 5.4。

准备工作

  1. 一台干净的 Linux 服务器:本教程以 CentOS 7 64位 为例,对于 Ubuntu/Debian,包管理命令不同,但编译安装的原理类似。
  2. 拥有 root 权限:或者一个有 sudo 权限的用户。
  3. 网络连接:用于下载源码包。

第一步:更新系统并安装编译依赖

登录到您的服务器,然后执行以下命令来更新系统并安装编译 PHP 和 Apache 所需的基本工具和库。

apache php5.4安装教程
(图片来源网络,侵删)
# 切换到 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

  1. 解压并进入 Apache 目录

    tar -zxvf httpd-2.4.57.tar.gz
    cd httpd-2.4.57
  2. 配置编译选项 这是关键步骤,我们定义了 Apache 的安装路径、模块支持等。

    apache php5.4安装教程
    (图片来源网络,侵删)
    ./configure \
        --prefix=/usr/local/apache2 \          # 指定安装目录
        --enable-so \                          # 启用 so 模块,用于加载 DSO 模块
        --enable-rewrite \                     # 启用 URL 重写模块
        --enable-ssl \                         # 启用 SSL 模块
        --with-pcre                            # 使用 PCRE 正则表达式库
  3. 编译和安装 这个过程可能需要几分钟时间。

    make
    make install

第四步:编译安装 PHP 5.4

  1. 先退出 Apache 目录,然后解压并进入 PHP 目录

    cd /usr/local/src
    tar -zxvf php-5.4.45.tar.gz
    cd php-5.4.45
  2. 配置编译选项 我们需要告诉 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 这样的路径。

  3. 编译和安装 这个过程比编译 Apache 更耗时。

    make
    make install

第五步:配置 Apache 以支持 PHP

  1. 复制 PHP 配置文件 PHP 源码包中提供了一个示例配置文件,我们将其复制到之前指定的配置目录中。

    cp php.ini-development /usr/local/php/etc/php.ini
  2. 编辑 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
  3. 创建一个测试页面 在 Apache 的网站根目录(默认是 /usr/local/apache2/htdocs/)下创建一个 info.php 文件。

    echo "<?php phpinfo(); ?>" > /usr/local/apache2/htdocs/info.php

第六步:启动服务并测试

  1. 启动 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),请先停止它们。

  2. 设置开机自启 (可选) 为了方便,可以创建一个简单的 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
  3. 测试 打开浏览器,访问 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 请求通过 ProxyPassmod_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 版本。