将php升级到5.5后,解码无法正常工作

时间:2014-05-19 05:13:31

标签: php mysql codeigniter php-5.5

我使用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‹û'É>Åì¦Ô—

但它适用于新成立的公司。有什么问题?

2 个答案:

答案 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