PHP 7.2 在 Windows 中使用 mcrypt

PHP 7.2 with mcrypt in Windows

有一些巨大的遗留系统,它们对 PHP 的 mcrypt 的依赖非常重要和至关重要(包括数据库中的数据存储)。在升级到 PHP 7.2(已经运行良好)时,我需要找到一种方法来维护这个库。

我本地的测试环境是Windows。现场环境在CentOS运行

我看到的一些答案是解密并将 mcrypt 更改为 openssl(我认为目前不可能,因为有很多数据需要解密)。

另一种方法是下载具有 mcrypt 支持的较低 PHP 版本,复制扩展名并将其添加到 php.ini(我什至不知道该文件夹)。

正在将 PHP 降级到 5.6,由于安全问题,它不适合。

在这种情况下可以做什么?

基本上我觉得你已经提到了所有的可能性,你没有选择。 不要降级到PHP 5.6 这种方法没有未来

MCrypt 已从 PHP 中删除,您想要升级 PHP 的主要原因之一是:安全性。 MCrypt 库不再维护。 因此安装 MCrypt 扩展也是一个坏主意。但它可以是一个临时解决方案(例如遵循这些说明 https://serverpilot.io/community/articles/how-to-install-the-php-mcrypt-extension.html)。

唯一好的解决方案是从 mcrypt 迁移到其他。 Whosebug 上已经有关于此主题的问题(例如 )。或者你可以使用一些加密库。迁移大量 code/data 可能会很痛苦,但这是本例中最 future-oriented 的方法。

请注意,没有关于 mcrypt options/code 的代码或信息。

可能是 mcrypt 使用的唯一问题 non-standard 空填充。要使用不支持空填充的另一个实现进行解密(它是 non-standard),只需在不使用填充的情况下解密,然后删除空填充。

如果您还必须像 mcrypt 一样加密,只需添加空填充并使用 no-padding 加密。

真正考虑迁移当前加密或添加一些标志以表明加密是(或不)兼容mcrypt

尽管有所有警告和建议,如果您仍然需要让它工作,请尝试以下操作:

  1. 找到您的 PHP 目录。通常它位于 C:\Program Files\PHP\v7.2
  2. 然后转到此 url: http://pecl.php.net/package/mcrypt/1.0.3/windows
  3. 下载更符合您要求的软件包。例如,如果 你是 使用 FastCGI 并选择 64 位 Windows 安装 7.2 非线程安全 (NTS) x64
  4. 打开zip并将php_mcrypt.dll文件复制到C:\Program Files\PHP\v7.2\ext 目录.
  5. 编辑 php.ini 文件并将其添加到动态扩展 部分: 分机=php_mcrypt.dll
  6. 保存 php.ini 并重新启动您的网络服务器。

希望对您有所帮助。