在Linux中安装PHP:Ubuntu/Debian运行
sudo apt update && sudo apt install php;CentOS/RHEL执行
sudo yum install php或
sudo dnf install php,安装后重启Web服务
以下是针对 “如何在 Linux 安装 PHP” 的完整操作指南,包含主流发行版(Ubuntu/Debian、CentOS/RHEL)的详细步骤、源码编译方案、扩展管理及常见问题解答:
前置准备
无论采用何种方式安装 PHP,均需满足以下条件:
| 项目 | 说明 |
|———————|——————————————————————–|
| 操作系统 | Ubuntu 20.04+ / Debian 11+
OR CentOS 7/8 / RHEL 8+ |
| 网络连接 | 确保可访问互联网以下载软件包 |
| sudo 权限 | 非 root 用户需具备 sudo 执行权 |
| 目标用途 | Web 开发环境 → 推荐 LAMP/LEMP 栈;命令行脚本 → 仅需基础环境 |
通过包管理器安装(推荐)
适用于 Ubuntu/Debian 系统
# 1. 更新软件源索引 sudo apt update && sudo apt upgrade -y # 2. 安装默认 PHP 及常用组件 (PHP 8.1) sudo apt install -y php libapache2-mod-php php-mysql php-cli php-gd php-mbstring php-xml php-curl # 3. 可选:安装最新稳定版 PHP (Ondrej PPA) sudo add-apt-repository ppa:ondrej/php -y sudo apt update sudo apt install -y php8.3 libapache2-mod-php8.3 # 4. 重启 Apache 生效 sudo systemctl restart apache2
关键目录说明:
/etc/php/{version}/→ 全局配置文件目录/var/www/html/→ 默认 Web 根目录/usr/bin/php→ CLI 入口文件
适用于 CentOS/RHEL 系统
# 1. 启用 EPEL 和 Remi 仓库 sudo dnf install -y epel-release https://rpms.remirepo.net/enterprise/remi-release-$(rpm -E %centos_ver).rpm # 2. 重置并启用 PHP 8.3 模块 sudo dnf module reset php -y sudo dnf module enable php:remi-8.3 -y # 3. 安装 PHP 及相关组件 sudo dnf install -y php php-mysqlnd php-gd php-mbstring php-xml php-opcache php-pecl-apcu # 4. 重启 HTTPD 服务 sudo systemctl restart httpd
注意:CentOS 8+ 使用 httpd 而非 apache2,且默认禁用静态模块需手动加载。
️ 源码编译安装(高级用法)
此方法适合需要自定义参数或支持特殊架构的场景:
# 1. 安装编译依赖项
sudo apt install -y build-essential libssl-dev zlib1g-dev
libpq-dev libzip-dev libicu-dev libonig-dev libxml2-dev
# 2. 下载指定版本源码(以 PHP 8.3.12 为例)
wget https://www.php.net/distributions/php-8.3.12.tar.gz
tar -zxvf php-8.3.12.tar.gz && cd php-8.3.12
# 3. 配置编译选项(关键参数详解)
./configure --prefix=/opt/php83
--with-config-file-path=/opt/php83/bin
--enable-fpm --enable-opcache --with-jpeg-dir=/usr
--with-png-dir=/usr --with-freetype-dir=/usr
--with-zlib-dir=/usr --with-curl=/usr
--with-openssl=/usr --with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd --enable-mbstring
--enable-exif --enable-ftp --enable-sockets
--disable-debug --disable-rpath --enable-shared
# 4. 编译并安装
make -j$(nproc) && sudo make install
# 5. 添加环境变量
echo 'export PATH="/opt/php83/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
优势:完全掌控编译选项,可剔除无用模块减少内存占用。
常用 PHP 扩展安装对照表
| 功能类别 | Ubuntu/Debian 包名 | CentOS/RHEL 包名 | 用途说明 |
|---|---|---|---|
| JSON | php-json |
php-json |
JSON 数据处理 |
| cURL | php-curl |
php-curl |
HTTP/HTTPS 请求 |
| ImageMagick | php-imagick |
php-pecl-imagick |
图像处理 |
| Memcached | php-memcached |
php-pecl-memcached |
分布式缓存 |
| Redis | php-redis |
php-pecl-redis |
NoSQL 数据库交互 |
| Yarn (Composer) | composer (全局安装) |
php-pecl-yaml + Composer自签 |
PHP 包管理工具 |
安装示例:
# Ubuntu/Debian sudo apt install -y php-redis php-mongodb # CentOS/RHEL sudo dnf install -y php-pecl-redis php-pecl-mongodb
️ 配置与验证
修改 php.ini
主配置文件路径:
- Ubuntu:
/etc/php/{version}/cli/php.ini(CLI) /apache2/php.ini(Web) - CentOS:
/etc/opt/remi/php{version}/php.ini
典型优化项:
memory_limit = 256M # 脚本最大内存限制 upload_max_filesize = 100M # 上传文件上限 post_max_size = 100M # POST 数据上限 max_execution_time = 300 # 脚本超时时间(秒)
验证安装
# 查看版本信息 php -v # 输出示例:PHP 8.3.12 (cli) (built: Jul 15 2024 ...) # 创建 info.php 测试文件 echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php > /dev/null # 浏览器访问 http://your_server_ip/info.php
相关问答 FAQs
Q1: 如何在同一台服务器上运行多个 PHP 版本?
A: 使用 update-alternatives 管理多版本:
# Ubuntu/Debian sudo update-alternatives --config php # 设置默认 CLI 版本 sudo a2dismod php8.1 && sudo a2enmod php8.3 # 切换 Apache 使用的 PHP FPM 版本 # CentOS/RHEL sudo alternatives --config php # 图形化选择默认版本 sudo alternatives --set php /usr/bin/php83 # 命令行强制设置
注意:每次切换后需重启 Web 服务器。
Q2: 安装 PHP 后无法解析 .php 文件怎么办?
A: 此问题通常由 Web 服务器未正确加载 PHP 模块导致:
- Apache 用户:检查是否启用了
mod_php或libapache2-mod-php模块,并确认DirectoryIndex包含index.php。 - Nginx 用户:需手动配置 FastCGI 代理,示例配置片段:
location ~ .php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } - 通用排查:检查错误日志(
/var/log/apache2/error.log或/var/log/nginx/error.log),常见错误包括权限不足或路径
