PHP扩展能够为PHP语言增加更多功能特性,比如操作Redis、处理图片、支持特定加密算法等,在实际项目开发中经常需要根据需求安装对应的PHP扩展。不同的服务器环境和PHP部署方式,适用的扩展安装方法存在差异,掌握多种安装方法能更高效地完成环境配置。

方法一:使用phpize手动编译安装
这种方式适合需要安装自定义扩展或者官方未提供预编译包的扩展场景,操作步骤如下:
- 首先下载对应扩展的源码包,解压后进入解压目录
- 执行
phpize命令生成编译配置文件,该命令属于PHP开发工具包,若未安装需要先安装php-dev相关包 - 执行
./configure --with-php-config=/path/to/php-config命令,指定PHP的配置路径,不同环境的php-config路径可能不同,可以通过which php-config命令查找 - 执行
make && make install命令完成编译和安装,安装完成后会生成对应的.so扩展文件 - 最后在php.ini配置文件中添加
extension=扩展名.so,重启PHP服务使配置生效
以下是简单的操作示例:
# 下载redis扩展源码 wget https://pecl.php.net/get/redis-5.3.7.tgz # 解压 tar -zxvf redis-5.3.7.tgz cd redis-5.3.7 # 生成编译配置 phpize # 配置编译参数 ./configure --with-php-config=/usr/bin/php-config # 编译安装 make && make install # 编辑php.ini添加扩展 echo "extension=redis.so" >> /etc/php/7.4/cli/php.ini # 重启php-fpm systemctl restart php7.4-fpm
方法二:使用pecl工具安装
pecl是PHP官方提供的扩展管理工具,适合安装官方仓库中已有的扩展,操作更加简便:
- 首先确保已经安装pecl工具,一般安装PHP开发包时会自带,若未安装可以通过系统包管理器安装
- 执行
pecl install 扩展名命令,工具会自动下载源码、编译并安装扩展 - 安装完成后根据提示在php.ini中添加扩展配置,或者执行
echo "extension=扩展名.so" >> $(php -i | grep "Loaded Configuration File" | cut -d ">" -f 2 | tr -d " ")自动添加配置 - 重启PHP服务使扩展生效
安装redis扩展的示例:
# 使用pecl安装redis扩展 pecl install redis # 自动添加扩展到php.ini echo "extension=redis.so" >> $(php -i | grep "Loaded Configuration File" | cut -d ">" -f 2 | tr -d " ") # 重启PHP服务 systemctl restart php-fpm
方法三:通过系统包管理器安装
这种方式适合使用系统包管理器部署PHP的环境,比如apt、yum等,操作最简单,但是扩展版本可能受系统源限制:
- Ubuntu/Debian系统使用apt命令:
sudo apt install php-扩展名,比如安装curl扩展执行sudo apt install php-curl - CentOS/RHEL系统使用yum命令:
sudo yum install php-扩展名,比如安装gd扩展执行sudo yum install php-gd - 安装完成后系统会自动配置扩展并重启相关服务,无需手动修改php.ini
不同系统安装常用扩展的示例:
# Ubuntu系统安装pdo_mysql、mbstring扩展 sudo apt update sudo apt install php-mysql php-mbstring # CentOS系统安装xml、zip扩展 sudo yum install php-xml php-zip
方法四:通过composer引入纯PHP实现的扩展
部分扩展是纯PHP实现的,不需要编译,可以直接通过composer引入到项目中:
- 在项目根目录执行
composer require 扩展包名命令,比如引入monolog日志库执行composer require monolog/monolog - 引入后直接在代码中通过
require 'vendor/autoload.php';加载即可使用扩展功能 - 这种方式仅适合纯PHP实现的扩展,依赖C语言的扩展无法通过composer安装
composer引入扩展的示例:
<?php
// 加载composer自动加载文件
require 'vendor/autoload.php';
// 使用引入的monolog扩展
use MonologLogger;
use MonologHandlerStreamHandler;
// 创建日志实例
$log = new Logger('name');
$log->pushHandler(new StreamHandler('app.log', Logger::WARNING));
// 写入日志
$log->warning('这是一条警告日志');
$log->error('这是一条错误日志');
不同安装方法的适用场景对比
为了帮助开发者选择合适的安装方法,以下是不同方法的特性对比:
| 安装方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| phpize手动编译 | 自定义扩展、无预编译包的扩展 | 灵活度高,可自定义编译参数 | 操作步骤多,需要手动处理依赖 |
| pecl工具安装 | 官方仓库已有的扩展 | 操作简便,自动处理编译流程 | 依赖pecl工具,部分扩展可能版本不全 |
| 系统包管理器安装 | 使用系统包部署的PHP环境 | 操作简单,自动处理依赖和服务重启 | 扩展版本受系统源限制 |
| composer引入 | 纯PHP实现的扩展 | 无需编译,随项目迁移方便 | 仅支持纯PHP扩展,不支持C语言扩展 |
安装扩展的注意事项
- 安装扩展前先确认PHP版本,部分扩展对PHP版本有要求,比如redis 6.x扩展需要PHP 7.4及以上版本
- 安装完成后可以通过
php -m命令查看已安装的扩展,确认扩展是否加载成功 - 修改php.ini后一定要重启PHP服务(php-fpm或者apache服务),否则配置不会生效
- 生产环境安装扩展前最好先在测试环境验证,避免扩展兼容性问题影响业务运行
注意:如果PHP运行在Windows环境,扩展文件是.dll格式,需要下载对应PHP版本和线程安全模式的dll文件,放到PHP的ext目录下,再在php.ini中添加extension=扩展名.dll配置即可,操作步骤和Linux环境类似,只是扩展文件格式和安装包来源不同。