卸载php扩展需先验证其运行状态,再通过注释配置、删除ini文件或扩展文件实现禁用或彻底移除,最后重启服务并验证结果。

确认扩展是否已启用
卸载前先验证该扩展是否真正在运行,避免误操作。用 php -m 列出所有已加载模块,或运行 php -i | grep "extension_dir" 查看扩展存放路径,再结合 php --ri <em>extname</em>(如 php --ri mysqli)检查具体状态。
注意:有些扩展是编译进 PHP 的(如 json、mbstring),无法“卸载”,只能禁用;而通过 pecl install 或手动编译安装的扩展(如 redis、grpc)才可移除。
禁用扩展(最常用且安全的方式)
绝大多数场景下,“卸载”实际只需停用——修改 PHP 配置文件,让扩展不再加载。
- 找到主配置文件:
php --ini输出的Loaded Configuration File路径,通常是/etc/php/*/cli/php.ini或/usr/local/etc/php/php.ini - 搜索
extension=行,注释掉对应扩展行,例如把extension=redis.so改成;extension=redis.so - 若扩展是通过独立
.ini文件启用的(如 Debian/Ubuntu 下的/etc/php/*/mods-available/redis.ini),直接删除该文件或执行phpenmod -v all -s ALL -r redis(Debian系)或rm /etc/php.d/redis.ini(RHEL/CentOS) - 改完后务必重启 Web 服务(
systemctl restart apache2或systemctl restart php-fpm)或 CLI 环境
彻底删除扩展文件(仅适用于非内置扩展)
禁用只是不加载,文件仍留在磁盘上。要完全清理,需定位并删除其二进制文件和配置残留。
DESTOON B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。
立即学习“PHP免费学习笔记(深入)”;
- 用
php-config --extension-dir查扩展目录(如/usr/lib/php/20220829/),进入后找对应.so文件(如redis.so)并rm掉 - 检查是否有 PECL 安装记录:
pecl list,若存在,执行pecl uninstall <em>extname</em>(如pecl uninstall xdebug) - 留意多 PHP 版本共存情况:不同版本的
php.ini和扩展目录可能分离,which php和php -v必须与目标环境一致 - 某些扩展(如
ionCube Loader)会写入php.ini多行(含zend_extension=),需一并清理,否则启动时报Failed loading错误
验证卸载结果与常见陷阱
完成操作后必须验证,不能只信配置改了就完事。
- CLI 下运行
php -m | grep -i redis(替换为你操作的扩展名),输出为空才表示成功禁用 - Web 环境中创建
phpinfo()页面,搜索扩展名,确认无“enabled”字样;同时检查Loaded Configuration File是否是你修改的那个文件 - 常见坑:
php.ini有多个(CLI / FPM / Apache 模块各自独立)、扩展名拼写错误(gd.sovsgd)、路径权限问题导致.so文件删了但 PHP 还在缓存旧句柄(重启服务不彻底) - 如果你用的是 Docker,记得重建镜像或确保
docker exec进入的是正确容器,宿主机改配置对容器内无效
真正难的不是删文件,而是搞清当前 PHP 实例到底读哪个配置、加载哪些路径、由哪个进程托管——漏掉任一环节,扩展就还在后台跑着。










