PHP 8 中禁用 xmlrpc 扩展应优先注释配置中的 extension=xmlrpc.so 或运行 phpdismod xmlrpc,再重启 PHP 服务;仅在确认无需时才删除 .so 文件及对应 ini 文件,并注意源码编译需重新 configure 去除 --with-xmlrpc。

PHP 8 中去除 xmlrpc 扩展,关键不是删文件,而是停用加载并清理配置痕迹。xmlrpc 默认不启用,若你看到它出现在 php -m 输出里,说明它已被显式启用——可能是编译时加了 --with-xmlrpc,也可能是运行时通过 ini 文件加载了扩展模块。
确认 xmlrpc 是否已启用
执行以下命令检查:
-
php -m | grep xmlrpc—— 若有输出,说明当前 PHP 环境已加载该扩展 -
php --ini查看配置文件路径,再用grep -r "xmlrpc" /etc/php/8.*/(路径按实际调整)搜索所有启用行 - 留意两种加载方式:
extension=xmlrpc.so(常规扩展)或zend_extension=xmlrpc.so(极少,多见于旧调试扩展)
禁用 xmlrpc 加载(推荐首选)
不删除文件,只关闭加载,最安全且可逆:
- 找到对应 ini 文件(常见位置:
/etc/php/8.*/mods-available/xmlrpc.ini或/etc/php/8.*/cli/php.ini) - 将含
extension=xmlrpc.so的行前面加;注释掉,例如改为:;extension=xmlrpc.so - 如果使用
phpenmod/phpdismod(如 Ubuntu),运行sudo phpdismod xmlrpc - 重启 PHP 服务:
sudo systemctl restart php8.1-fpm(版本号按实际替换)或sudo service apache2 restart
彻底移除 xmlrpc 模块文件(仅当确认不需要)
仅在明确不再需要、且确认未被其他扩展依赖时操作:
立即学习“PHP免费学习笔记(深入)”;
- 先查模块路径:
php -i | grep "xmlrpc.*=>"或find /usr/lib/php -name "*xmlrpc*.so" 2>/dev/null - 删除 .so 文件(如
/usr/lib/php/20220829/xmlrpc.so) - 同步删除对应的 ini 配置文件(如
/etc/php/8.*/mods-available/xmlrpc.ini) - 注意:若 PHP 是源码编译安装且启用了 xmlrpc,需重新 configure(去掉
--with-xmlrpc)并重装,否则make install可能恢复该模块
验证是否已清除
完成操作后,务必验证效果:
-
php -m | grep xmlrpc应无任何输出 -
php -i | grep xmlrpc应不显示模块信息或已禁用提示 - Web 环境下访问
phpinfo()页面,搜索 “xmlrpc” 确认无相关章节 - 若曾开放 XML-RPC 接口(如 WordPress 的
xmlrpc.php),建议同时在 Web 服务器层禁止访问该路径,防绕过



















