XAMPP 8.2+ 版本因 PHP 官方移除,已不支持 xmlrpc 扩展;仅 XAMPP 8.1.x 及更早版可在 php.ini 中启用 extension=xmlrpc 并重启 Apache 验证生效。

XAMPP 默认不启用 xmlrpc 扩展,且 PHP 8.2+ 已彻底移除该扩展 —— 如果你用的是 XAMPP 8.2 或更新版本(如 8.3),xmlrpc 根本不可用,强行启用会失败。
确认你的 PHP 版本是否还支持 xmlrpc
PHP 官方从 8.2.0 版本起正式废弃并删除了 xmlrpc 扩展。XAMPP 8.2.x 及之后版本基于 PHP 8.2+,所以即使你在 php.ini 里取消注释 extension=xmlrpc,Apache 启动时也会报错:PHP Warning: PHP Startup: Unable to load dynamic library 'xmlrpc',或直接忽略该行。
- 运行
php -v查看版本:若显示PHP 8.2.x或8.3.x,就不用继续往下试了 - XAMPP 8.1.x 及更早版本(对应 PHP 8.1 或 7.4)才可能带 xmlrpc,但默认仍被注释
- 验证方式:在
phpinfo()页面搜索xmlrpc—— 没区块 = 不支持或未启用;有但状态为 disabled = 需启用
在支持的 XAMPP 版本中启用 xmlrpc(仅限 PHP ≤ 8.1)
如果你确认用的是 XAMPP 8.1.x 或更旧版(例如 xampp-windows-x64-8.1.25-0),可按以下步骤启用:
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
- 打开 XAMPP 控制面板 → 点击 Apache 行右侧的
Config→ 选择PHP (php.ini),用记事本打开该文件 - 搜索
;extension=xmlrpc(注意 Windows 下是.dll,但无需写后缀)→ 改为extension=xmlrpc - 确保
extension_dir指向正确路径,例如:extension_dir = "C:\xampp\php\ext"(末尾不能有反斜杠) -
xmlrpc依赖libxml,而 XAMPP 默认已启用,无需额外操作;但若启用后报错undefined function xmlrpc_encode,说明libxml也没开 —— 检查并启用extension=libxml(通常已默认开启) - 保存后,必须在 XAMPP 控制面板中完全
Stop再StartApache,不能只刷新页面
启用后验证是否真正生效
别信 php.ini 改了就完事 —— 很多人改的是 CLI 的 php.ini,而 Apache 加载的是另一份。
- 在
\xampp\htdocs\下建一个test_xmlrpc.php,内容为:<?php var_dump(extension_loaded('xmlrpc')); echo "\n"; var_dump(function_exists('xmlrpc_encode')); ?> - 浏览器访问
http://localhost/test_xmlrpc.php,输出应为:bool(true) bool(true)
- 如果第一行是
bool(false),说明没启用成功;第二行是bool(false)但第一行是true,说明扩展加载了但函数未暴露(极少见,多因编译参数异常) - 常见失败原因:改错了 php.ini(务必以
phpinfo()顶部 “Loaded Configuration File” 显示路径为准)、Apache 未重启、PHP 版本实际已是 8.2+
替代方案:PHP 8.2+ 必须换用其他协议
XML-RPC 已死,不是配置问题,是语言层移除。硬要远程调用,得换路子:
-
curl+ JSON API:现代 WebService 几乎全走 REST/JSON,用curl_init()发送 POST 即可,比 XML-RPC 更轻、更易调试 -
SoapClient:如果服务端提供 WSDL,SoapClient在 XAMPP 中默认可用(需启用extension=soap) - 自己封装 HTTP 请求:用
file_get_contents()配合stream_context_create()也能发 XML-RPC 请求,只是没现成函数解码 —— 你可以用simplexml_load_string()手动解析响应 - 第三方库如
spatie/xml-to-array或thecodingmachine/guessing可辅助处理 XML 载荷,但无法替代原生xmlrpc_decode_request
最常被忽略的一点:很多人花几小时折腾 xmlrpc,却没先确认服务端是否真的还在用 XML-RPC —— 当前主流框架(Laravel、Symfony)、云 API(阿里云、腾讯云)、甚至 WordPress REST API 都已弃用它。先查文档,再动手。

















