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

-
包管理器安装 (如
apt,yum,dnf):- 优点:简单、快速、自动处理依赖关系,系统会自动更新 PHP 到安全版本。
- 缺点:灵活性较低,安装的 PHP 版本可能不是最新的,或者你需要的特定扩展可能不可用。
- 推荐:绝大多数开发者,尤其是新手,应该使用这种方式。
-
源码编译安装:
- 优点:高度可定制,可以安装最新版本的 PHP,并精确选择需要的扩展和功能。
- 缺点:过程复杂,需要手动解决所有依赖,升级和维护麻烦。
- 推荐:高级用户、需要特定 PHP 版本或功能、或者包管理器中的版本过旧时使用。
方法一:使用包管理器安装 (推荐)
这种方式的核心思想是:让系统帮你管理一切。
A. 基于 Debian/Ubuntu 的系统 (使用 apt)
-
更新包列表 在安装任何新软件之前,最好先更新一下系统的包列表。
(图片来源网络,侵删)sudo apt update
-
安装 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(图像处理) 等。
-
验证安装 安装完成后,检查 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 的系统 (使用 yum 或 dnf)
-
安装 EPEL 仓库 EPEL (Extra Packages for Enterprise Linux) 提供了许多不在官方仓库中的软件包。
(图片来源网络,侵删)# 对于 CentOS/RHEL 7/8 sudo yum install epel-release # 对于 Fedora 或 CentOS/RHEL 9 sudo dnf install epel-release
-
安装 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
-
启用 Remi 仓库中的 PHP 版本 要启用 PHP 8.2:
# 对于 dnf (CentOS 8+, Fedora) sudo dnf module enable php:remi-8.2 -y # 对于 yum (CentOS 7) # yum 模块系统可能不同,通常直接安装即可
-
安装 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
-
验证安装
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 工具来切换。
-
注册所有版本
# 为 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 的每一个细节。
-
准备工作 你需要安装编译 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
-
下载并解压 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
-
配置编译选项 这是最关键的一步,使用
./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 而不会互相干扰。
-
编译和安装 这个过程可能需要一些时间,具体取决于你的 CPU 性能。
# 编译 (使用 -j 参数可以加快编译速度,通常使用 CPU 核心数) make -j$(nproc) # 安装 sudo make install
-
配置环境
-
创建软链接,方便在命令行中使用
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
-
-
验证安装
php -v
你应该能看到你刚刚编译的 PHP 版本信息。
常见问题与故障排除
Q: php -v 命令找不到,提示 "command not found"
- 原因:PHP 的可执行文件路径没有被添加到系统的
PATH环境变量中。 - 解决方案:
- 如果你用包管理器安装,通常是
/usr/bin/php,检查它是否存在:ls /usr/bin/php。 - 如果存在,问题可能是你的用户
PATH没有包含/usr/bin,可以尝试用sudo php -v。 - 如果你用源码编译安装,并指定了
--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:
- 确保
mod_php或mod_proxy_fcgi(用于 FPM) 已启用。 - 检查你的虚拟主机配置,
AddType application/x-httpd-php .php这行是否存在且正确。 - 重启 Apache:
sudo systemctl restart apache2。
- 确保
- Nginx:
- Nginx 本身不处理 PHP,需要通过
fastcgi_pass将请求转发给 PHP-FPM。 - 检查你的 Nginx 配置文件中的
location ~ \.php$块,确保fastcgi_pass指向正确的 PHP-FPM socket 或地址 (通常是unix:/run/php/php8.2-fpm.sock或0.0.1:9000)。 - 重启 Nginx:
sudo systemctl restart nginx,并重启 PHP-FPM:sudo systemctl restart php8.2-fpm。
- Nginx 本身不处理 PHP,需要通过
| 特性 | 包管理器安装 | 源码编译安装 |
|---|---|---|
| 难度 | 低 | 高 |
| 速度 | 快 | 慢 |
| 依赖 | 自动处理 | 手动解决 |
| 灵活性 | 低 | 高 |
| 版本控制 | 受限于仓库 | 完全自定义 |
| 适用人群 | 绝大多数用户 | 高级用户、有特殊需求者 |
对于绝大多数开发者来说,使用包管理器安装 PHP 是最省心、最稳定的选择,只有在遇到包管理器无法满足的特殊需求时,才应考虑从源码编译,希望这份教程对你有帮助!
