最近在测试建行的一个接口,在本地(PHPStudy2016+PHP5.4)测试好后,传到线上服务器,发现一片空白。
后来,一路排查,找到问题所在:
function des_encrypt($data,$deskey){
$blocksize = mcrypt_get_block_size(MCRYPT_DES,MCRYPT_MODE_ECB);
$pad = $blocksize - (strlen($data) % $blocksize);
$data1 = $data. str_repeat(chr($pad),$pad);
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES,MCRYPT_MODE_ECB),MCRYPT_RAND); //初始化向量
@$data_encrypt = mcrypt_encrypt(MCRYPT_DES,$deskey,$data1,MCRYPT_MODE_ECB);//加密函数
$datastr = bin2hex($data_encrypt);
return $datastr;
}
到这一步,发现了一堆的常量,其中出现了MCRYPT,这不就是php的一个扩展嘛?于是赶紧phpinfo,对比本地和线上,发现本地是有mcrypt扩展的,线上的没有,于是赶紧给线上的安装了mcrypt扩展(
![委屈](http://static.blog.csdn.net/xheditor/xheditor_emot/default/wronged.gif)
#yum install libmcrypt libmcrypt-devel mcrypt mhash php-mcrypt
![大笑](http://static.blog.csdn.net/xheditor/xheditor_emot/default/laugh.gif)
从这里可以知道一件事,不懂测试的运维不是好的PHP程序猿