1. 介绍
为什么在 Ubuntu 上使用 PHP
PHP 是一种服务器端脚本语言,广泛用于许多 Web 应用程序,包括 WordPress。多年来它在 Web 开发中被大量使用,众多 CMS 平台和框架都是基于 PHP 构建的。
Ubuntu 是一个高度稳定的 Linux 发行版,全球开发者都在使用,尤其适合服务器环境。Ubuntu 与 PHP 的组合被广泛采用,从个人开发环境到企业级生产系统皆是如此。
目标受众与本文目的
本文面向各种用户,从想在 Ubuntu 上安装 PHP 但不知从何入手的初学者,到需要安装特定 PHP 版本的中级用户。我们将尽可能清晰地解释每一步操作。
本文基于 Ubuntu 22.04 LTS,但相同的基本步骤同样适用于其他版本。
你将学到的内容
阅读本文后,你将能够理解并实践以下内容:
- 在 Ubuntu 上安装 PHP 的基本方法
- 如何安装并在多个 PHP 版本之间切换
- 如何验证 PHP 的运行情况并排除故障
- Apache 与 Nginx 的集成配置
- 常用 PHP 模块的安装方法
2. 前置条件与准备工作
如何检查 Ubuntu 版本
首先,检查你正在使用的 Ubuntu 版本。不同的 Ubuntu 版本可能在 PHP 安装方式和支持的模块上略有差异。
你可以运行以下命令来查看 Ubuntu 版本:
lsb_release -a
或者使用此命令:
cat /etc/os-release
本文基于 Ubuntu 22.04 LTS 说明,但相同的步骤大体上也适用于 Ubuntu 20.04 和 23.10。
保持系统软件包最新
在安装 PHP 之前,务必更新所有系统软件包。这有助于避免依赖问题和冲突。
sudo apt update
sudo apt upgrade -y
此命令会更新 APT 软件包索引,并确保所有软件包能够以最新的稳定版本进行安装。
安装必需的工具
某些 PHP 版本需要额外的工具来管理软件源。software-properties-common 软件包用于添加诸如 PPA 之类的仓库。
如果系统中未安装该软件包,请使用以下命令进行安装:
sudo apt install -y software-properties-common
该软件包为 add-apt-repository 等命令提供支持,这些命令在通过 PPA 安装特定 PHP 版本时经常用到。
使用 root 权限或 sudo
本文中大多数操作都需要系统级别的更改。执行命令时请确保使用 sudo。
3. 如何安装 PHP
在 Ubuntu 上安装 PHP 主要有两种方式:一种是从默认软件源安装,另一种是使用 PPA(个人软件包仓库)安装特定版本。下面将详细说明每种方法。
从默认软件源安装 PHP
Ubuntu 在默认软件源中提供了一个稳定的 PHP 版本。如果你不需要特定的版本,这是最简便的方式。
sudo apt install -y php
安装完成后,验证 PHP 是否正确安装:
php -v
示例输出:
PHP 8.1.2 (cli) (built: ...)
在 Ubuntu 22.04 上,默认安装的是 PHP 8.1。
使用 PPA 安装特定 PHP 版本
如果你想使用最新的 PHP 版本或管理多个版本,可以添加 ondrej/php PPA。
步骤 1:添加 PPA 仓库
sudo add-apt-repository ppa:ondrej/php
sudo apt update
该 PPA 在 Ubuntu 社区中使用广泛,提供多个 PHP 版本的稳定构建。
步骤 2:安装所需的 PHP 版本
例如,安装 PHP 8.2:
sudo apt install -y php8.2
你也可以安装其他版本,如 PHP 7.4 或 8.0。
步骤 3:验证已安装的版本
php -v
4. 验证 PHP 运行
安装 PHP 后,请验证其是否正常工作。您可以通过命令行以及 Apache 或 Nginx 等 Web 服务器进行检查。
通过命令行 (CLI) 验证
首先,在终端中检查 PHP 版本:
php -v
示例输出:
PHP 8.2.10 (cli) (built: Aug 23 2023 08:12:10) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.2.10, Copyright (c) Zend Technologies
通过 Web 服务器 (Apache) 验证
如果已安装 Apache,请使用 phpinfo() 函数创建一个测试页面。
1. 创建测试文件
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
2. 在浏览器中访问
http://localhost/info.php
3. 确认输出
如果显示了详细的 PHP 信息,则说明 PHP 在 Apache 上工作正常。
🔍 注意:
phpinfo()的输出包含敏感信息。验证完成后请删除该文件。
sudo rm /var/www/html/info.php
使用 Nginx + PHP-FPM 验证
使用 Nginx 时,PHP 通过 php-fpm 处理。要验证正确的集成,请确保在 Nginx 配置文件中正确配置了 .php 文件,然后像在 Apache 中一样创建 info.php 文件。
如果配置不正确,可能会出现 500 错误或看到文件被下载而不是执行。在这种情况下,请检查 Nginx 配置中的 fastcgi_pass 和 include fastcgi-php.conf; 等设置。
5. 安装常用的 PHP 模块
单独安装 PHP 并不能提供所有功能。许多功能以独立的模块(扩展)的形式提供,需要时进行安装。本节介绍实际开发和运维中常用的 PHP 模块。
什么是 PHP 模块?
PHP 模块(也称为扩展)为 PHP 添加特定功能,例如数据库连接、多字节字符串处理、图像处理和 XML 解析。
模块以 APT 包的形式提供,可通过以下方式安装:
sudo apt install php-module-name
如果想指定版本,请使用类似 php8.2-mbstring 的格式。

主要 PHP 模块及其用途
php-mbstring(多字节字符串支持)
该模块对于处理多字节字符(如日文)至关重要。几乎是日文网站和邮件处理的必备模块。
sudo apt install php-mbstring
php-mysql(MySQL / MariaDB 连接)
连接 MySQL 或 MariaDB 数据库时需要此模块。它是 WordPress 等应用的必备组件。
sudo apt install php-mysql
php-gd(图像处理)
该模块用于生成、转换和调整图像大小,常用于缩略图和图像处理。
sudo apt install php-gd
php-xml(XML 处理)
处理基于 XML 的数据(如 RSS 源和 SOAP 服务)时需要此模块。它常用于 CMS 平台和 API 集成。
sudo apt install php-xml
php-curl(HTTP 通信)
该模块使服务器能够发起 HTTP 请求,例如集成外部 API。许多现代框架都需要它。
sudo apt install php-curl
php-zip(压缩文件处理)
该模块允许创建和解压 ZIP 文件,常用于文件上传功能。
sudo apt install php-zip
启用模块并重启服务
某些模块在安装后需要显式激活。使用 phpenmod 来启用它们。
sudo phpenmod module_name
sudo systemctl restart apache2
启用的模块在重启 Web 服务器后生效。
6. 管理和切换 PHP 版本
Ubuntu 允许在单台服务器上安装和使用 多个 PHP 版本。这在开发环境或托管多个 Web 应用的服务器上尤为有用。
本节说明如何为 CLI 和 Apache 切换 PHP 版本。
在 CLI 中切换 PHP 版本
使用的命令:update-alternatives
您可以使用 update-alternatives 轻松切换命令行中使用的 PHP 版本。
步骤 1:检查已安装的 PHP 版本
ls /usr/bin/php*
步骤 2:注册 PHP 版本(仅首次)
sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 74
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 82
步骤 3:选择 PHP 版本
sudo update-alternatives --config php
您将看到类似以下的选择菜单:
There are 2 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/php8.2 82 auto mode
1 /usr/bin/php7.4 74 manual mode
2 /usr/bin/php8.2 82 manual mode
Press <enter> to keep the current choice[*], or type selection number:
步骤 4:验证版本
php -v
在 Apache 中切换 PHP 版本
使用 Apache 时,PHP 版本通过 Apache 模块管理。您可以通过启用和禁用模块来切换版本。
1. 检查可用模块
ls /etc/apache2/mods-available | grep php
2. 禁用当前激活的模块
sudo a2dismod php7.4
3. 启用所需的版本
sudo a2enmod php8.2
4. 重启 Apache
sudo systemctl restart apache2
7. 将 PHP 与 Apache 和 Nginx 集成
当 PHP 与 Web 服务器集成时,其威力才能真正发挥。在 Ubuntu 上,最常用的 Web 服务器是 Apache 和 Nginx。
Apache 集成(mod_php)
Apache 可以使用 mod_php 模块直接处理 PHP 脚本。这种方法简单,适用于 WordPress 等 CMS 平台。
步骤 1:安装 Apache 和 mod_php
sudo apt install -y apache2 libapache2-mod-php
步骤 2:重启 Apache
sudo systemctl restart apache2
步骤 3:测试 PHP 执行
<?php
phpinfo();
?>
http://localhost/test.php
Nginx 集成(PHP-FPM)
Nginx 不直接处理 PHP,而是依赖 PHP-FPM(FastCGI 进程管理器)。
步骤 1:安装 Nginx 和 PHP-FPM
sudo apt install -y nginx php-fpm
步骤 2:编辑 Nginx 配置
sudo nano /etc/nginx/sites-available/default
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
步骤 3:重启 Nginx
sudo systemctl restart nginx
8. 故障排除
浏览器中显示 PHP 源代码
原因
当 Web 服务器未正确处理 PHP 文件时会出现此情况。
解决方案
- Apache:
sudo apt install libapache2-mod-php sudo systemctl restart apache2
- Nginx:
sudo systemctl restart php8.2-fpm sudo systemctl restart nginx
PHP 函数未定义
原因
所需的 PHP 模块未安装或未启用。
解决方案
sudo apt install php-mbstring php-xml php-curl
sudo systemctl restart apache2
php -m
PHP 错误未显示
解决方案
sudo nano /etc/php/8.2/apache2/php.ini
display_errors = On
error_reporting = E_ALL
sudo systemctl restart apache2
日志文件位置
Apache:
/var/log/apache2/error.log
Nginx:
/var/log/nginx/error.log
PHP-FPM:
/var/log/php8.2-fpm.log
9. 总结
本文提供了在 Ubuntu 上安装 PHP 的逐步说明,涵盖了从基础到高级的主题。
关键要点
- 检查您的 Ubuntu 版本并更新软件包
- 通过默认软件源或 PPA 安装 PHP
- 通过 CLI 和 Web 服务器验证 PHP
- 使用模块扩展功能
- 灵活管理多个 PHP 版本
- 与 Apache 或 Nginx 正确集成
- 故障排除时检查日志
后续步骤
- 安装 MySQL 或 MariaDB
- 搭建 WordPress
- 使用 Laravel 等 PHP 框架
- 使用 SSL 证书启用 HTTPS
- 使用 systemd 管理服务
Ubuntu 与 PHP 共同提供了一个强大且灵活的开发环境。请以本指南为基础,持续提升您的技能。
10. 常见问题解答 (FAQ)
Q1. 如何在 Ubuntu 上安装最新的 PHP 版本?
A. 使用 ondrej/php PPA 并指定所需的版本。
Q2. 如何在 CLI 中切换 PHP 版本?
sudo update-alternatives --config php
Q3. 在 Apache 中显示 PHP 源代码。
sudo apt install libapache2-mod-php
sudo systemctl restart apache2
Q4. php.ini 位于何处?
- Apache:
/etc/php/8.2/apache2/php.ini - CLI:
/etc/php/8.2/cli/php.ini
Q5. 如何启用 PHP 模块?
sudo phpenmod mbstring
sudo systemctl restart apache2
Q6. PHP 在 Nginx 上无法工作。
确保已安装 php-fpm,并且 fastcgi_pass 配置正确。
Q7. PHP 错误不可见。
display_errors = On
error_reporting = E_ALL


