本文目录导读:

配置 PHP 扩展组件通常有两种主要方式:编译安装(适用于源码编译安装 PHP 的情况)和 动态加载(适用于使用包管理器或预编译 PHP 的情况),绝大多数现代 PHP 环境(如 Ubuntu、CentOS、Mac 的 Homebrew、Windows 的 XAMPP/WampServer)都采用动态加载的方式。
下面分为 Linux(Ubuntu/CentOS)、Windows 和 源码编译 三种常见场景来讲解。
Linux 下使用包管理器(最简单、最推荐)
这是生产环境中最常见的方式,PHP 扩展通常被打包成独立的软件包。
Ubuntu / Debian 系统
步骤 1:查找扩展包 首先确认你的 PHP 版本(PHP 8.1):
php -v
然后搜索扩展包,命名规则通常是 php<版本号>-<扩展名>:
apt-cache search php | grep <扩展名> # 示例:查找 redis 扩展 apt-cache search php | grep redis # 输出示例:php8.1-redis - Redis extension for PHP
步骤 2:安装扩展
# 示例:安装 Redis 和 MongoDB 扩展 sudo apt update sudo apt install php8.1-redis php8.1-mongodb
步骤 3:启用并重启 大多数情况下,安装后会自动启用,你只需重启 Web 服务器(如 Apache 或 Nginx + PHP-FPM)。
# 重启 Apache sudo systemctl restart apache2 # 重启 PHP-FPM(如果你用的是 Nginx) sudo systemctl restart php8.1-fpm
步骤 4:验证
创建一个 info.php 文件,内容为 <?php phpinfo(); ?>,在浏览器中访问,搜索扩展名,确认已加载。
CentOS / RHEL 系统(使用 Remi 仓库)
CentOS 默认仓库中的 PHP 版本较旧,通常推荐使用 Remi 仓库。
步骤 1:安装 EPEL 和 Remi 仓库
sudo yum install epel-release sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm # CentOS 7 # 或对于 CentOS 8/9,需调整 URL
步骤 2:启用对应 PHP 版本的模块
# 列出可用模块 sudo yum module list php # 启用 PHP 8.1 sudo yum module enable php:remi-8.1 -y
步骤 3:安装扩展
命名规则:php-<扩展名>。
sudo yum install php-redis php-mongodb php-gd php-mbstring
步骤 4:重启 Web 服务
sudo systemctl restart httpd # Apache sudo systemctl restart php-fpm # PHP-FPM
Windows 系统(如 XAMPP / WampServer)
Windows 下通常不需要编译,只需在 php.ini 中取消注释或添加 extension 行。
步骤 1:找到 php.ini 文件
- XAMPP:
C:\xampp\php\php.ini - WampServer: 点击托盘图标 -> PHP -> php.ini
- PHP for Windows 独立版: 在 PHP 安装目录下
步骤 2:确认扩展 .dll 文件存在
进入 PHP 安装目录下的 ext 文件夹(C:\xampp\php\ext)。
看到类似 php_redis.dll 或 php_mongodb.dll 的文件。如果没有,需要手动下载(Windows 版本的 dll 文件通常从 PECL 或 Windows 二进制包 获取)。
步骤 3:编辑 php.ini
找到 ;extension=xxx 部分,去掉前面的分号 ,或添加新行:
; 去掉分号(取消注释) extension=curl extension=gd extension=mbstring ; 添加新扩展(确保 ext/ 目录下有对应文件) extension=redis extension=mongodb
步骤 4:重启 Web 服务器
- XAMPP:在控制面板中停止并重启 Apache。
- WampServer:左键点击托盘图标 -> Restart All Services。
源码编译安装(高级用户)
当官方包管理器没有提供你需要的扩展,或者你需要自定义编译参数时使用。
步骤 1:下载扩展源码
从 PECL 官网下载 .tgz 包,或使用 git 克隆。
cd /tmp wget https://pecl.php.net/get/redis-6.0.2.tgz tar -xzvf redis-6.0.2.tgz cd redis-6.0.2
步骤 2:使用 phpize 编译
phpize 是 PHP 用来准备扩展编译环境的工具。
# 生成 configure 文件 /usr/bin/phpize # 配置(有些扩展需要指定 --with-xxx-config) ./configure --with-php-config=/usr/bin/php-config # 编译和安装 make sudo make install
步骤 3:在 php.ini 中启用
安装完成后,会输出一个 .so 文件的路径(/usr/lib/php/20200930/redis.so)。
在 php.ini 中添加:
extension=redis.so
步骤 4:重启服务验证
php -m | grep redis
常见问题与排错
-
扩展未加载,但
php.ini中有配置- 原因: 扩展版本与 PHP 版本不匹配(PHP 8.2 的扩展不能用在 PHP 8.1 上)。
- 解决: 使用
php -v查看 PHP 版本,下载对应版本的扩展。
-
找不到
phpize或php-config- 原因: 未安装 PHP 开发包。
- 解决(Ubuntu):
sudo apt install php8.1-dev - 解决(CentOS):
sudo yum install php-devel
-
提示
undefined symbol或class not found- 原因: 扩展依赖其他库未安装(MongoDB 扩展依赖
libmongoc,Redis 扩展可能依赖hiredis)。 - 解决: 使用包管理器先安装库(
apt install libmongoc-dev),再重新编译。
- 原因: 扩展依赖其他库未安装(MongoDB 扩展依赖
-
Docker 环境
- 在 Docker 中,使用
docker-php-ext-install命令:RUN docker-php-ext-install pdo_mysql mysqli RUN pecl install redis && docker-php-ext-enable redis
- 在 Docker 中,使用
| 场景 | 推荐方法 | 关键命令/操作 |
|---|---|---|
| Ubuntu/Debian | apt install |
sudo apt install php8.1-xxx |
| CentOS/RHEL | yum install (Remi) |
sudo yum install php-xxx |
| Windows | 编辑 php.ini |
取消注释 extension=xxx.dll |
| 源码编译 | phpize + make + install |
./configure && make && sudo make install |
| Docker | docker-php-ext-install |
docker-php-ext-install xxx |
最稳妥的实践:先用 php -v 确认 PHP 版本 → 用包管理器搜索安装 → 最后重启 PHP-FPM/Apache → 用 php -m 或 phpinfo() 验证。