宝塔面板php扩展管理入口在「php管理」→对应版本「设置」→「配置修改」标签页下方的「安装扩展」按钮;需确认php版本与运行模式(php-fpm非cli),安装后必须重启对应php-fpm服务,手动编译扩展(如swoole)须指定phpize和php-config路径并手动配置extension_dir与extension=xxx.so,卸载时应彻底删除php.ini中相关行而非仅注释。

PHP扩展在宝塔面板里藏在哪
宝塔面板的PHP扩展管理入口不在「软件商店」,也不在「网站」设置里,而是在「PHP管理」页面的「配置修改」标签页下方——那个容易被忽略的「安装扩展」按钮才是正主。点进去后看到的列表,是当前PHP版本已编译安装的扩展(如 mysqli、curl),不是系统全局已装的包,更不等于 php -m 输出结果(后者可能含 CLI 模式独有扩展)。
装扩展前先看PHP版本和运行模式
同一个服务器可能跑多个PHP版本(比如7.4、8.1),每个版本的扩展是独立管理的;更要命的是,宝塔默认为网站启用的是 php-fpm 模式,而你在SSH里执行 php -m 看到的是 cli 模式的扩展列表——两者完全不互通。所以:
- 确认你要操作的PHP版本(在「PHP管理」列表里点对应版本的「设置」)
- 装完扩展后,必须重启对应版本的
php-fpm服务(点「服务」→「重启」),光刷新网页或重载Nginx没用 - 验证是否生效,得用网站实际访问触发,或在网站根目录放
info.php(内容为<?php phpinfo(); ?>),浏览器打开查看
手动编译的扩展(如swoole、redis)别硬点「安装」
宝塔「安装扩展」列表里只包含它内置打包好的扩展,像 swoole、redis、grpc 这类需要指定参数或依赖第三方库的,点了「安装」大概率失败并卡住进度条。正确做法是:
- 先在SSH里用宝塔自带的PHP路径手动编译,例如:
/www/server/php/81/bin/phpize→./configure --with-php-config=/www/server/php/81/bin/php-config→make && make install - 编译成功后,会输出类似
Installing shared extensions: /www/server/php/81/lib/php/extensions/no-debug-non-zts-20210902/的路径,记下这个目录和生成的swoole.so文件名 - 回到宝塔「PHP管理」→ 对应版本 → 「配置修改」→ 找到
extension_dir那行,确认值是上面的路径;再在下面新增一行extension=swoole.so - 保存 → 重启
php-fpm
删扩展不是点「卸载」就完事
宝塔界面上的「卸载」按钮,本质是把 extension=xxx.so 这行从 php.ini 里注释掉,并不会删文件。但有些扩展(比如旧版 ionCube)卸载后残留配置会导致PHP启动失败,错误日志里出现 PHP Warning: Module 'ioncube' already loaded 或直接 Segmentation fault。稳妥做法是:
- 进「配置修改」页面,手动搜索
extension=和zend_extension=,把相关行全删掉(不只是注释) - 检查
/www/server/php/{版本}/etc/php.ini和同目录下的php-fpm.conf,二者都可能加载扩展 - 删完务必用
/www/server/php/{版本}/bin/php -m | grep xxx在命令行确认没加载,再重启服务
扩展管理最麻烦的从来不是点几下,而是搞清「哪个PHP进程、哪个配置文件、哪个扩展路径」三者是否对得上——漏一个,就白忙活半小时。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











