杰瑞科技汇

Linux下PHP安装步骤详解?

目录

  1. 前言:选择哪种安装方式?
  2. 使用包管理器安装 (推荐)
    • 基于 Debian/Ubuntu 的系统
    • 基于 CentOS/RHEL/Fedora 的系统
    • 如何管理 PHP 扩展?
    • 如何切换 PHP 版本?(以 Ubuntu 为例)
  3. 从源码编译安装 (高级)
    • 准备工作
    • 下载并解压 PHP 源码
    • 配置编译选项
    • 编译和安装
    • 验证安装
  4. 常见问题与故障排除
    • php -v 命令找不到
    • 如何找到 php.ini 文件位置?
    • Apache/Nginx 配置问题

前言:选择哪种安装方式?

在 Linux 上安装 PHP,主要有两种方式:

Linux下PHP安装步骤详解?-图1
(图片来源网络,侵删)
  • 包管理器安装 (如 apt, yum, dnf)

    • 优点:简单、快速、自动处理依赖关系,系统会自动更新 PHP 到安全版本。
    • 缺点:灵活性较低,安装的 PHP 版本可能不是最新的,或者你需要的特定扩展可能不可用。
    • 推荐绝大多数开发者,尤其是新手,应该使用这种方式。
  • 源码编译安装

    • 优点:高度可定制,可以安装最新版本的 PHP,并精确选择需要的扩展和功能。
    • 缺点:过程复杂,需要手动解决所有依赖,升级和维护麻烦。
    • 推荐:高级用户、需要特定 PHP 版本或功能、或者包管理器中的版本过旧时使用。

方法一:使用包管理器安装 (推荐)

这种方式的核心思想是:让系统帮你管理一切

A. 基于 Debian/Ubuntu 的系统 (使用 apt)

  1. 更新包列表 在安装任何新软件之前,最好先更新一下系统的包列表。

    Linux下PHP安装步骤详解?-图2
    (图片来源网络,侵删)
    sudo apt update
  2. 安装 PHP 及常用扩展 我们以安装 PHP 8.2 为例(请根据你的系统替换为可用版本,如 php8.1, php8.0 等)。

    # 安装 PHP 8.2 和一些最常用的扩展
    sudo apt install php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-xml php8.2-curl php8.2-gd php8.2-mbstring php8.2-zip php8.2-bcmath
    • php8.2-cli: 命令行接口,用于运行 PHP 脚本。
    • php8.2-fpm: FastCGI Process Manager,通常与 Nginx 配合使用。
    • php8.2-mysql: 用于连接 MySQL 数据库。
    • 其他扩展:根据你的项目需求安装,如 xml, curl, gd (图像处理) 等。
  3. 验证安装 安装完成后,检查 PHP 是否安装成功。

    php -v

    你应该能看到类似下面的输出:

    PHP 8.2.10 (cli) (built: Sep  5 2025 14:55:51) (NTS)
    Copyright (c) The PHP Group
    Zend Engine v4.2.10, Copyright (c) Zend Technologies
        with Zend OPcache v8.2.10, Copyright (c), by Zend Technologies

B. 基于 CentOS/RHEL/Fedora 的系统 (使用 yumdnf)

  1. 安装 EPEL 仓库 EPEL (Extra Packages for Enterprise Linux) 提供了许多不在官方仓库中的软件包。

    Linux下PHP安装步骤详解?-图3
    (图片来源网络,侵删)
    # 对于 CentOS/RHEL 7/8
    sudo yum install epel-release
    # 对于 Fedora 或 CentOS/RHEL 9
    sudo dnf install epel-release
  2. 安装 Remi 仓库 Remi 仓库提供了最新版本的 PHP,这是 CentOS/RHEL 系统上安装新版 PHP 的最佳选择。

    # 对于 CentOS/RHEL 7
    sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    # 对于 CentOS/RHEL 8
    sudo yum install http://rpms.remirepo.net/enterprise/remi-release-8.rpm
    # 对于 CentOS/RHEL 9 或 Fedora
    sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
  3. 启用 Remi 仓库中的 PHP 版本 要启用 PHP 8.2:

    # 对于 dnf (CentOS 8+, Fedora)
    sudo dnf module enable php:remi-8.2 -y
    # 对于 yum (CentOS 7)
    # yum 模块系统可能不同,通常直接安装即可
  4. 安装 PHP 及常用扩展

    # 使用 dnf
    sudo dnf install php php-cli php-fpm php-mysqlnd php-xml php-curl php-gd php-mbstring php-zip php-bcmath
    # 或者使用 yum
    # sudo yum install php php-cli php-fpm php-mysqlnd php-xml php-curl php-gd php-mbstring php-zip php-bcmath
  5. 验证安装

    php -v

C. 如何管理 PHP 扩展?

安装好 PHP 后,你可能需要添加或删除扩展。

  • 在 Debian/Ubuntu 上 (apt):

    # 安装新扩展,例如安装 redis 扩展
    sudo apt install php8.2-redis
    # 删除扩展
    sudo apt remove php8.2-redis

    安装或删除扩展后,需要重启你的 Web 服务器 (Apache/Nginx) 和 PHP-FPM 服务

  • 在 CentOS/RHEL 上 (yum/dnf):

    # 安装新扩展,例如安装 redis 扩展
    sudo dnf install php-pecl-redis
    # 删除扩展
    sudo dnf remove php-pecl-redis

    同样,重启 Web 服务器和 PHP-FPM 服务

D. 如何切换 PHP 版本?(以 Ubuntu 为例)

如果你的系统里安装了多个 PHP 版本(如 8.0, 8.1, 8.2),可以使用 update-alternatives 工具来切换。

  1. 注册所有版本

    # 为 php8.0, php8.1, php8.2 注册
    sudo update-alternatives --set php /usr/bin/php8.0
    sudo update-alternatives --set php /usr/bin/php8.1
    sudo update-alternatives --set php /usr/bin/php8.2

    正确的用法是先注册所有可用的版本,然后选择一个。

    # 1. 注册所有版本
    sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.0 80
    sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.1 81
    sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 82
    # 2. 切换版本
    sudo update-alternatives --config php

    系统会提示你选择一个版本,输入数字即可。


方法二:从源码编译安装 (高级)

这种方式让你完全掌控 PHP 的每一个细节。

  1. 准备工作 你需要安装编译 PHP 所需的各种开发工具和库。

    # Debian/Ubuntu
    sudo apt update
    sudo apt install -y build-essential libxml2-dev libsqlite3-dev libbz2-dev libjpeg-dev libpng-dev libfreetype6-dev libzip-dev libonig-dev libssl-dev
    # CentOS/RHEL
    sudo yum groupinstall "Development Tools" -y
    sudo yum install libxml2-devel sqlite-devel bzip2-devel libjpeg-turbo-devel libpng-devel freetype-devel libzip-devel oniguruma-devel openssl-devel
  2. 下载并解压 PHP 源码 访问 PHP 官网下载页面 获取最新的稳定版源码包链接。

    # 以 PHP 8.2.10 为例
    wget https://www.php.net/distributions/php-8.2.10.tar.gz
    tar -xvf php-8.2.10.tar.gz
    cd php-8.2.10
  3. 配置编译选项 这是最关键的一步,使用 ./configure 脚本来定义你需要的功能和扩展,运行 ./configure --help 可以看到所有选项。 一个常用的配置示例:

    ./configure \
        --prefix=/usr/local/php-8.2.10 \ # 安装目录
        --enable-fpm \                   # 启用 FPM
        --enable-mbstring \              # 启用多字节字符串
        --enable-mysqlnd \               # 启用原生 MySQL 支持
        --with-openssl \                 # 启用 OpenSSL
        --with-zip \                     # 启用 Zip
        --with-jpeg \                    # 启用 JPEG 支持
        --with-freetype \                # 启用 FreeType 支持
        --enable-bcmath \                # 启用 BCMath 精确数学计算
        --enable-opcache                 # 启用 OPcache
    • --prefix: 指定安装路径,这样你就可以同时安装多个版本的 PHP 而不会互相干扰。
  4. 编译和安装 这个过程可能需要一些时间,具体取决于你的 CPU 性能。

    # 编译 (使用 -j 参数可以加快编译速度,通常使用 CPU 核心数)
    make -j$(nproc)
    # 安装
    sudo make install
  5. 配置环境

    • 创建软链接,方便在命令行中使用 php 命令:

      sudo ln -sf /usr/local/php-8.2.10/bin/php /usr/local/bin/php
    • 复制配置文件

      # 复制 php.ini-development (开发环境) 或 php.ini-production (生产环境)
      sudo cp php.ini-development /usr/local/php-8.2.10/lib/php.ini
      # 复制 FPM 配置文件
      sudo cp /usr/local/php-8.2.10/etc/php-fpm.conf.default /usr/local/php-8.2.10/etc/php-fpm.conf
      sudo cp sapi/fpm/php-fpm.service /etc/systemd/system/
    • 启动并设置开机自启 PHP-FPM

      sudo systemctl daemon-reload
      sudo systemctl start php-fpm
      sudo systemctl enable php-fpm
  6. 验证安装

    php -v

    你应该能看到你刚刚编译的 PHP 版本信息。


常见问题与故障排除

Q: php -v 命令找不到,提示 "command not found"

  • 原因:PHP 的可执行文件路径没有被添加到系统的 PATH 环境变量中。
  • 解决方案
    1. 如果你用包管理器安装,通常是 /usr/bin/php,检查它是否存在:ls /usr/bin/php
    2. 如果存在,问题可能是你的用户 PATH 没有包含 /usr/bin,可以尝试用 sudo php -v
    3. 如果你用源码编译安装,并指定了 --prefix,你需要手动创建软链接,如上文步骤 5 所示。

Q: 如何找到 php.ini 文件位置?

  • 方法一:在 PHP 脚本中调用 phpinfo() 函数,在 "Loaded Configuration File" 一行就能看到路径。

  • 方法二:使用命令行参数:

    # 对于 CLI 版本
    php --ini
    # 输出示例:
    # Configuration File (php.ini) Path: /etc/php/8.2/cli
    # Loaded Configuration File:         /etc/php/8.2/cli/php.ini

Q: Apache/Nginx 配置问题 (无法显示 PHP 页面)

  • Apache:
    1. 确保 mod_phpmod_proxy_fcgi (用于 FPM) 已启用。
    2. 检查你的虚拟主机配置,AddType application/x-httpd-php .php 这行是否存在且正确。
    3. 重启 Apache: sudo systemctl restart apache2
  • Nginx:
    1. Nginx 本身不处理 PHP,需要通过 fastcgi_pass 将请求转发给 PHP-FPM。
    2. 检查你的 Nginx 配置文件中的 location ~ \.php$ 块,确保 fastcgi_pass 指向正确的 PHP-FPM socket 或地址 (通常是 unix:/run/php/php8.2-fpm.sock0.0.1:9000)。
    3. 重启 Nginx: sudo systemctl restart nginx,并重启 PHP-FPM: sudo systemctl restart php8.2-fpm

特性 包管理器安装 源码编译安装
难度
速度
依赖 自动处理 手动解决
灵活性
版本控制 受限于仓库 完全自定义
适用人群 绝大多数用户 高级用户、有特殊需求者

对于绝大多数开发者来说,使用包管理器安装 PHP 是最省心、最稳定的选择,只有在遇到包管理器无法满足的特殊需求时,才应考虑从源码编译,希望这份教程对你有帮助!

分享:
扫描分享到社交APP
上一篇
下一篇