在遷移一台處理網絡支付的服務器時,發現支付功能失效。PHP 版本為 5.3.3,系統為 Red Hat 4.1.2-54。Apache 錯誤日誌顯示:
PHP Fatal error: Call to undefined function bcmul() in /php_rsa.php on line xxx
bcmul() 屬於 PHP 的 BCMath 數學擴展,預設未安裝或未啟用,導致加密文件調用失敗。
yum install php-bcmath
安裝完成後重啟 PHP-FPM 或 Apache 即可生效。
若出現如下衝突:
Error: php53-common conflicts with php-common
請先更新系統再安裝對應版本:
yum update
yum install php53-bcmath
BCMath 提供任意精度數學運算,常用於金融計算。常用函數:
bcmul(string $left, string $right, int $scale = 0):高精度乘法bcscale(int $scale):設置全局默認小數位數<?php
echo bcmul('1.34747474747', '35', 3); // 輸出 47.161
echo bcmul('2', '4'); // 輸出 8
?>
[bcmath]
; 所有 bcmath 函數的默認小數位數
bcmath.scale = 0
systemctl reload php-fpm 或重啟 Apache)。bcmath.scale 以避免精度問題。