【问题标题】:phpMyAdmin mcrypt error on PHP7.1PHP7.1 上的 phpMyAdmin mcrypt 错误
【发布时间】:2017-04-25 06:15:26
【问题描述】:

Apache/2.4.23 (Win64) PHP/7.1.0

PhpMyAdmin:4.6.5.2

错误图片:

有什么想法吗?

【问题讨论】:

  • 请复制并粘贴错误信息。这样阅读起来就容易多了。即使该链接无效,它也会使您的问题完整。其他人可以在网络上搜索错误消息并在此处找到您的问题并希望得到答案。您还可以包括您为产生该错误所做的事情。
  • 函数 mcrypt_list_algorithms() 已弃用,mcrypt_module_open() 已弃用
  • 最好不要使用mcrypt,它已经废弃了近十年了。因此,它已被弃用,并将在 PHP 7.2 中从核心中删除并进入 PECL。它不支持标准 PKCS#7 (née PKCS#5) 填充,仅支持甚至不能用于二进制数据的非标准空填充。 mcrypt 有许多出色的 bugs 可以追溯到 2003 年。请考虑使用 defuseRNCryptor,它们提供了完整的解决方案,正在维护并且是正确的。
  • 为什么不从 Web GUI 迁移到更优雅、更灵活的东西呢? MySQL WorkbenchSQLYog。顺便说一句,桌面应用程序使您能够通过 ssh 隧道配置远程数据库连接。

标签: phpmyadmin localhost mcrypt


【解决方案1】:

这是与这样一个新的 PHP 版本的兼容性问题,技术上是与 phpMyAdmin 用于各种加密功能的library function

The problem was fixed 在 phpMyAdmin 中,并将成为下一个版本的一部分(将是 phpMyAdmin 4.6.6)

【讨论】:

    【解决方案2】:

    只是为了添加到 Alex 的答案中,代码有一个拼写错误,使其无效,它应该如下所示:

    public function handleError($errno, $errstr, $errfile, $errline)
    {
        if (error_reporting() == 0 || $errno == E_DEPRECATED) { // added – $errno == E_DEPRECATED
            return;
        }
        $this->addError($errstr, $errno, $errfile, $errline, true);
    }
    

    【讨论】:

    • 值得注意 - 如果在 php.ini 中更改设置 error_reporting 不起作用,则此解决方案有效。
    【解决方案3】:

    在 php.ini 中 error_reporting = E_ALL & ~E_DEPRECATED

    如果不行,也就是硬法——改代码phpMyadmin。 phpMyadmin 中的 set_error_handler 没有考虑 error_reporting。

    要排除 E_DEPRECATED,在 ../phpMyadmin/libraties/ErrorHandler.php 中

    改变这个方法

    public function handleError($errno, $errstr, $errfile, $errline)
    {
    if (error_reporting() == 0 || $ Errno == E_DEPRECATED) { // added – $errno == E_DEPRECATED
    return;
    }
    
    $this->addError($errstr, $errno, $errfile, $errline, true);
    }
    

    【讨论】:

    • @TheReduxPL 最好自己给出答案
    猜你喜欢
    • 2017-06-04
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 2013-06-29
    • 2012-06-28
    • 2017-08-22
    • 1970-01-01
    相关资源
    最近更新 更多