xml-rpc 扩展在 php 8.2+ 中已被官方移除,xampp 8.2 起彻底不支持;php ≤ 8.1 时需在 php.ini 中启用 extension=xmlrpc 并重启 apache,再通过函数检测和实际调用验证是否生效。

XML-RPC 扩展在 XAMPP 中默认未启用,且 PHP 8.2+ 已将其移除;若你用的是 XAMPP 8.1 或更早版本(对应 PHP ≤ 8.1),它仍存在但需手动开启;PHP 8.2 及以上则无法启用——不是配置问题,是扩展已被官方废弃。
确认你的 PHP 版本是否还支持 xmlrpc
别急着改 php.ini,先看能不能用。XAMPP 8.2(含)起已彻底移除 xmlrpc 扩展,即使你在 php.ini 里写 extension=xmlrpc,启动 Apache 也会报错:PHP Warning: PHP Startup: Unable to load dynamic library 'xmlrpc'。
- 打开浏览器访问
http://localhost/dashboard/phpinfo.php,搜索 “PHP Version”,确认是否 ≤ 8.1 - 或命令行执行:
C:\xampp\php\php.exe -v,输出如PHP 8.1.28才可能启用成功 - 若为
PHP 8.2.12或更高,直接放弃——xmlrpc函数(如xmlrpc_encode、xmlrpc_decode)已从源码中删除,无法恢复
PHP ≤ 8.1 时:在 php.ini 中启用 xmlrpc 扩展
该扩展依赖 libxml(XAMPP 默认已启用),无需额外安装 DLL 或编译,只需正确启用:
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
- 以
phpinfo()页面顶部显示的Loaded Configuration File路径为准(常见为C:\xampp\php\php.ini),不要只点控制面板里的 Config → PHP - 用记事本或 VS Code 打开该文件,搜索
extension=xmlrpc - 若找到带分号的行:
;extension=xmlrpc,删掉分号改为extension=xmlrpc - 若搜不到,就在
; Dynamic Extensions区域下方**手动添加一行**:extension=xmlrpc - 确保
extension_dir指向正确路径,例如:extension_dir = "C:\xampp\php\ext"(末尾不加反斜杠) - 保存后,必须在 XAMPP 控制面板中 **Stop → Start Apache**,仅刷新页面无效
验证 xmlrpc 是否真正加载成功
光看 phpinfo() 有模块区块还不够,得测函数和典型用法:
- 新建
C:\xampp\htdocs\test-xmlrpc.php,内容如下:
<?php if (!extension_loaded('xmlrpc')) {
die('xmlrpc extension is not loaded');
}
var_dump(function_exists('xmlrpc_encode'), function_exists('xmlrpc_decode'));
echo "\n";
$result = xmlrpc_encode(['name' => 'test']);
var_dump($result);
?>
- 访问
http://localhost/test-xmlrpc.php,应输出bool(true)两次,再输出一段 XML 字符串 - 若报错
Call to undefined function xmlrpc_encode(),说明扩展未加载——检查是否改对了php.ini路径、是否重启 Apache、是否 PHP 版本超标 - 若报错
PHP Warning: xmlrpc extension requires libxml,说明extension=libxml被禁用了(但 XAMPP 默认已内置,极少发生)
替代方案:PHP 8.2+ 必须迁移到其他协议
XML-RPC 已死,硬扛没意义。实际项目中,你应该:
- 优先改用 REST + JSON:用
curl_init()或file_get_contents()调用 HTTP 接口,数据用json_encode()/json_decode() - 若对方服务只提供 XML-RPC 接口且无法升级,可用纯 PHP 实现客户端(不依赖扩展),比如用
SimpleXMLElement手动构造/解析 XML 请求体——复杂但可行 - 避免用第三方封装库(如 PEAR 的 XML_RPC),它们同样依赖已废弃的扩展,在 PHP 8.2+ 下直接不可用
最容易被忽略的一点:很多教程让你“下载 dll 放到 ext 目录”,这在 XAMPP 中完全多余——xmlrpc 是 PHP 源码级内置扩展,Windows 下它就叫 php_xmlrpc.dll,但 XAMPP 8.1 及以前已自带,你只需要启用;而 8.2+ 连这个 DLL 都不编译了。










