PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法

  在一台处理网络支付的服务器迁移的时候,发现不能支付。

  PHP环境:

  PHP版本为5.3.3

  系统为Red Hat 4.1.2-54

  查看apache的错误日志,发现是加密文件中一个函数bcmul()报错:

  

复制代码 代码如下:

  PHP Fatal error:  Call to undefined function bcmul() in /php_rsa.php on line xxx

  解决办法:

  使用如下命令:

  

复制代码 代码如下:
yum install php-bcmath

  就安装好了。

  如果出现下面这种情况:

  

复制代码 代码如下:

  Loaded plugins: fastestmirror

  Loading mirror speeds from cached hostfile

  * base: mirrors.yun-idc.com

  * extras: mirrors.yun-idc.com

  * rpmforge: ftp.riken.jp

  * updates: mirrors.yun-idc.com

  Setting up Install Process

  Resolving Dependencies

  --> Running transaction check

  ---> Package php-bcmath.x86_64 0:5.1.6-40.el5_9 set to be updated

  --> Processing Dependency: php-common = 5.1.6-40.el5_9 for package: php-bcmath

  --> Running transaction check

  ---> Package php-common.x86_64 0:5.1.6-40.el5_9 set to be updated

  --> Processing Conflict: php53-common conflicts php-common

  --> Finished Dependency Resolution

  php53-common-5.3.3-13.el5_9.1.x86_64 from installed has depsolving problems

  --> php53-common conflicts with php-common

  Error: php53-common conflicts with php-common

  You could try using --skip-broken to work around the problem

  You could try running: package-cleanup --problems

  package-cleanup --dupes

  rpm -Va --nofiles --nodigest

  就需要使用yum update 之后再yum install php53-bcmath就好了

  顺便了解了一下,bcmath这个函数是PHP数学扩展中的一个。可以使用 bcscale() 来设置全局默认的小数位数,具体用法如下:

  

复制代码 代码如下:

  string bcmul ( string $left_operand , string $right_operand [, int $scale ] )

  例子:

  

复制代码 代码如下:

  <?php

  echo bcmul('1.34747474747', '35', 3); // 47.161

  echo bcmul('2', '4'); // 8

  ?>

  此函数在php.ini中的选项:

  

复制代码 代码如下:

  [bcmath]

  ; Number of decimal digits for all bcmath functions.

  ; http://www.php.net/manual/en/bc.configuration.php#ini.bcmath.scale

  bcmath.scale = 0