xampp 默认已静态编译 bcmath 扩展,无需 dll 文件,只需在 apache 对应的 php.ini 中取消 extension=bcmath 注释并重启 apache 即可启用;验证方式为 php -r "echo extension_loaded('bcmath') ? 'yes' : 'no';" 或 test.php 中 function_exists('bcadd') 返回 true。

XAMPP 默认不启用 BCMath 扩展,但不需要重新编译 PHP —— 它已内置,只需在 php.ini 中取消注释并确认路径正确即可。
确认 BCMath 是否已编译进 PHP
BCMath 是 PHP 的核心数学扩展,在 XAMPP Windows 版中默认已静态编译进 PHP 二进制文件(不是以 php_bcmath.dll 形式存在),因此不会出现在 ext/ 目录下,也不会在 php -m 输出里显示为独立模块。直接运行:
php -r "echo extension_loaded('bcmath') ? 'yes' : 'no';"
若输出 yes,说明已编译;若为 no,则可能是极精简版 XAMPP 或损坏安装,需重装。
在 php.ini 中启用 BCMath
XAMPP 的 BCMath 不靠加载 DLL,而是靠 php.ini 中的一行开关控制。操作步骤如下:
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)
- 在打开的文件中搜索
bcmath,找到这一行:;extension=bcmath - 删掉开头的分号,改为:
extension=bcmath - 保存文件,重启 Apache(必须重启,仅重载配置无效)
⚠️ 注意:不要尝试把 extension=php_bcmath.dll 写进去 —— XAMPP 8.0+ 已移除该 DLL 文件,强行添加会导致启动报错或 Apache 拒绝响应。
验证是否生效及常见失败原因
创建一个 test.php 放在 htdocs 下,内容为:
<?php var_dump(function_exists('bcadd')); ?>
访问 http://localhost/test.php,应输出 bool(true)。若仍为 false,检查以下三点:
-
php.ini是否编辑的是 Apache 使用的那个(不是 CLI 的)—— XAMPP 有两个php.ini:一个在\xampp\php\(CLI 用),另一个在\xampp\apache\conf\或由 Apache 加载路径指定(Web 用);务必改后者 - Apache 是否真的重启成功(控制面板中 Apache 状态栏变绿,且无红色错误日志)
- 是否有多个
php.ini被意外加载(可通过phpinfo()页面顶部的 “Loaded Configuration File” 路径确认)
BCMath 的高精度能力(如 bcadd('1.23456789', '9.87654321', 10))依赖于启用状态本身,不涉及 ICU 或外部 DLL,所以只要 function_exists('bcadd') 返回 true,就可放心用于金融、密码学等对精度敏感的场景。










