【问题标题】:decode is not working correctly after upgrade the php to 5.5将 php 升级到 5.5 后解码无法正常工作
【发布时间】:2014-05-19 05:13:30
【问题描述】:

我使用 codeigniter 加密库来保存编码的公司名称。它适用于 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‹û'É>Åì¦Ô—

但它适用于新创建的公司。问题是什么?

【问题讨论】:

  • 您是否尝试将您的加密密钥作为第二个参数传递给decode?
  • 不,我没有。我使用相同的代码,没有任何更改。

标签: php mysql codeigniter php-5.5


【解决方案1】:

可能是您的新 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

它应该可以工作。或者您可以使用其他系统重新编码所有内容,但我建议使用前者。

注意 这是一个猜测,因为你没有告诉(到目前为止)你是否有扩展(或者你以前没有)也没有说你的 CI 版本,所以我只是浏览了一个我在我的服务器。但我很确定原因是这样的)

【讨论】:

  • 我已经安装了 php5-mcrypt。但是您的代码对我调试问题很有用。这是 php 5.5 中的 mcrypt 问题。我修好了它。谢谢
【解决方案2】:

根据@Damien 我的项目库使用 $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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-19
    • 2014-07-26
    • 2021-03-27
    • 2019-04-04
    • 2013-07-03
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多