我使用codeigniter加密lib来保存编码的公司名称。它正在使用php 5.3。我将我的操作系统升级到Ubuntu 14.04。所以现在我的php版本是5.5。旧保存的公司名称不起作用。相同的代码和相同的数据库工作在PHP 5.4机器。
旧的加密公司名称
$name = 'atQ1tmBTVcLV8ieDFCx/+RxHxj1CWXXyPYbPI/Q0Cxqe2piMqA/w3ze88199DwfP1L6CFA1MSUWedwD1z0gMmw=='
$company_name = $this->encrypt->decode($name);
echo $company_name; //result - ¾Ôf–s÷nŽ^¨H‡éêÁOðq‹û'É>Åì¦Ô—
但它适用于新成立的公司。有什么问题?
答案 0 :(得分:4)
可能是你的新php安装没有安装mcrypt库(或者你的新安装了它,而旧的安装没有)
编码库检查扩展是否已安装,如果没有,则继续使用其自定义方法:
if ($this->_mcrypt_exists === TRUE)
{
$enc = $this->mcrypt_encode($string, $key);
}
else
{
$enc = $this->_xor_encode($string, $key);
}
反过来是相同的:如果你有mcrypt,它使用mycrypt_decode($ data,$ Key),否则_xor_decode($ string,$ key)。尝试安装mcrypt
$ sudo apt-get install php5-mcrypt
它应该有效。或者您可以使用其他系统重新编码所有内容,但我建议使用前者。
<强> N.B。强> 这是一个猜测,因为你没有告诉(到目前为止)你是否有扩展名(或者如果你以前没有它)你也没有说过你的CI版本,所以我只浏览了我的一个服务器。但我很确定原因是这个)
答案 1 :(得分:0)
根据@Damien我的项目lib使用$this->_xor_decode($string, $key);
而不是$this->mcrypt_encode($string, $key);
。因为Ubuntu 14.04中的php 5.5与mcrypt存在一些问题。
我已从此命令修复它。
sudo cp /etc/php5/mods-available/mcrypt.ini /etc/php5/apache2/conf.d/
sudo service apache2 restart