在Linux系统中安装PHP扩展是增强PHP功能的关键步骤,无论是连接数据库、处理图像还是支持缓存,都需要通过安装相应的扩展来实现,Linux环境下安装PHP扩展有多种方式,包括使用包管理器、PECL(PHP Extension Community Library)以及从源码编译安装,具体选择取决于Linux发行版、PHP版本以及扩展的可用性,本文将详细介绍这些方法的操作步骤、注意事项及常见问题解决。

安装前的准备工作
在开始安装PHP扩展前,需完成以下准备工作,确保安装过程顺利:
- 确认PHP版本:不同版本的PHP可能对应不同版本的扩展,执行
php -v或php --version查看当前PHP版本,PHP 7.4和PHP 8.0的扩展可能不兼容。 - 安装必要依赖:编译扩展时需要依赖工具和库,如
build-essential(Ubuntu/Debian)、gcc、autoconf、libtool等,可通过以下命令安装:- Ubuntu/Debian:
sudo apt update && sudo apt install -y build-essential autoconf libtool - CentOS/RHEL:
sudo yum groupinstall "Development Tools" && sudo yum install -y autoconf libtool
- Ubuntu/Debian:
- 定位PHP配置文件:扩展的配置通常需要写入PHP的
php.ini文件,可通过php --ini找到该文件路径(如/etc/php/7.4/cli/php.ini或/etc/php/8.0/apache2/php.ini)。 - 备份重要文件:修改
php.ini前建议备份,避免配置错误导致PHP服务异常。
使用包管理器安装(适合新手)
包管理器安装是最简单的方式,适用于常见的PHP扩展,且能自动处理依赖关系,不同Linux发行版的包管理器不同,以下分别介绍Ubuntu/Debian(基于APT)和CentOS/RHEL(基于YUM/DNF)的操作。
Ubuntu/Debian系统(APT)
Ubuntu/Debian下可通过apt安装PHP扩展,扩展包名通常以php开头,后跟版本号和扩展名(如php7.4-mysql、php8.0-gd)。
操作步骤:
- 更新软件包列表:
sudo apt update - 安装扩展:例如安装MySQL扩展,执行
sudo apt install -y php7.4-mysql(根据PHP版本调整4) - 启用扩展:APT安装的扩展通常会自动启用,可通过
php -m | grep mysql验证。
CentOS/RHEL系统(YUM/DNF)
CentOS/RHEL下使用yum(CentOS 7及以下)或dnf(CentOS 8及以上)安装扩展,包名格式为php版本-扩展名(如php74-mysqlnd、php80-gd)。
操作步骤:
- 安装EPEL源(部分扩展需要):
sudo yum install -y epel-release(CentOS 7)或sudo dnf install -y epel-release(CentOS 8) - 安装扩展:例如安装GD库扩展,执行
sudo yum install -y php74-gd(根据PHP版本调整74) - 重启PHP服务:
sudo systemctl restart php-fpm(若使用Apache,则sudo systemctl restart httpd)
优点:简单快捷,自动处理依赖;缺点:扩展版本可能较旧,无法获取最新功能。
使用PECL安装(适合获取最新扩展)
PECL是PHP官方的扩展仓库,提供了大量非核心扩展,支持安装最新版本,需先安装php-pear和php-dev(或php-devel)工具。
安装PECL和开发工具
- Ubuntu/Debian:
sudo apt install -y php-pear php-dev php-zip
- CentOS/RHEL:
sudo yum install -y php-pear php-devel php-zip # CentOS 7 sudo dnf install -y php-pear php-devel php-zip # CentOS 8
使用PECL安装扩展
执行pecl install 扩展名即可安装,例如安装Redis扩展:

sudo pecl install redis
若扩展有依赖(如Redis需hiredis),需先安装依赖:
- Ubuntu/Debian:
sudo apt install -y libhiredis-dev - CentOS/RHEL:
sudo yum install -y hiredis-devel
配置PHP加载扩展
PECL安装后,扩展文件通常位于/usr/lib/php/20200930/(路径因PHP版本而异),需在php.ini中添加扩展配置:
- 打开
php.ini:sudo vim /etc/php/7.4/cli/php.ini - 添加以下内容(根据扩展名调整):
extension=redis.so
- 保存退出,重启PHP服务:
sudo systemctl restart php-fpm
验证安装
执行php -m | grep redis,若输出redis则表示安装成功。
注意事项:
- 多PHP版本环境:若系统有多个PHP版本(如PHP 7.4和PHP 8.0),需使用
phpize指定版本,/usr/bin/phpize7.4 # 生成PHP 7.4的编译配置 ./configure --with-php-config=/usr/bin/php-config7.4 make && make install
- 扩展版本匹配:PECL扩展版本需与PHP版本兼容,可通过
pecl search 扩展名查看可用版本,例如pecl search redis。
从源码编译安装(适合自定义扩展)
若扩展未在PECL中提供,或需要自定义配置(如开启特定功能),可从源码编译安装,以安装imagick扩展(ImageMagick的PHP绑定)为例:
安装依赖
- Ubuntu/Debian:
sudo apt install -y php-dev libmagickwand-dev - CentOS/RHEL:
sudo yum install -y php-devel ImageMagick-devel
下载扩展源码
从GitHub或扩展官网下载源码,例如imagick:
cd /tmp git clone https://github.com/Imagick/imagick.git cd imagick
编译安装
phpize # 生成编译配置脚本(需php-dev支持) ./configure # 配置编译选项(默认即可) make # 编译 sudo make install # 安装
配置PHP加载扩展
在php.ini中添加:

extension=imagick.so
重启PHP服务后验证:php -m | grep imagick。
优点:支持自定义配置,灵活性高;缺点:过程复杂,需手动处理依赖。
常见PHP扩展及用途
| 扩展名 | 功能描述 | 常见安装命令(APT) | 常见安装命令(YUM/DNF) |
|---|---|---|---|
| mysqlnd | MySQL数据库连接支持 | apt install php7.4-mysql |
yum install php74-mysqlnd |
| gd | 图像处理(生成、编辑图片) | apt install php7.4-gd |
yum install php74-gd |
| redis | Redis缓存支持 | pecl install redis |
pecl install redis |
| imagick | ImageMagick图像处理库绑定 | 源码编译(依赖libmagickwand-dev) | 源码编译(依赖ImageMagick-devel) |
| opcache | PHP字节码缓存,提升性能 | apt install php7.4-opcache |
yum install php74-opcache |
注意事项
- 多PHP版本管理:若系统使用多版本PHP(如通过
phpenv或php-fpm多实例),需确保扩展安装到对应版本的目录,并通过php-config指定路径。 - 扩展冲突:部分扩展(如
xdebug和opcache)可能存在冲突,需根据需求禁用其中一个。 - 服务重启:修改
php.ini或安装扩展后,必须重启PHP-FPM、Apache或Nginx服务,否则配置不生效。 - 安全权限:扩展文件(
.so文件)需有可执行权限,可通过chmod +x /usr/lib/php/.../xxx.so修复。
相关问答FAQs
问题1:安装PHP扩展后,执行php -m看不到扩展,但phpinfo()中显示已加载,是什么原因?
解答:这种情况通常是因为php -m和phpinfo()加载的php.ini文件不同。php -m默认加载CLI环境的配置文件(如/etc/php/7.4/cli/php.ini),而phpinfo()可能显示的是Web环境(如/etc/php/7.4/apache2/php.ini),需确保Web环境对应的php.ini中已添加扩展配置,并重启Web服务(如systemctl restart apache2)。
问题2:如何卸载已安装的PHP扩展?
解答:卸载方式取决于安装方式:
- 包管理器安装:使用
apt remove(Ubuntu/Debian)或yum remove(CentOS/RHEL),例如sudo apt remove php7.4-mysql。 - PECL安装:执行
pecl uninstall 扩展名,例如sudo pecl uninstall redis,并从php.ini中删除对应的extension=xxx.so配置。 - 源码编译安装:若
make install时未生成卸载脚本,需手动删除扩展文件(如/usr/lib/php/.../xxx.so)并从php.ini中移除配置,然后重启服务。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/28290.html