PHP 7.2在Windows中使用mcrypt

时间:2018-03-16 15:05:48

标签: php windows mcrypt php-7.2

有一些巨大的遗留系统依赖于PHP' mcrypt非常重要且至关重要(包括数据库中的数据存储)。我需要找到一种方法来维护这个库,同时升级到PHP 7.2(已经工作正常)。

我的本​​地测试环境是Windows。实时环境在CentOS上运行。

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

另一种方式点亮下载带有mcrypt的较低PHP版本 - 支持,复制扩展并将其添加到php.ini(我甚至不知道该文件夹)。

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

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

3 个答案:

答案 0 :(得分:9)

基本上我认为你已经提到了所有可能性而且你没有选择。 不要降级到PHP 5.6这种方法没有未来

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

唯一优秀的解决方案是从mcrypt迁移到 其他地方。 Stackoverflow上已经有关于此主题的问题(例如Upgrading my encryption library from Mcrypt to OpenSSL)。或者你可以使用一些加密库。迁移大量代码/数据可能会很痛苦,但在这种情况下,这是面向未来的最佳方法。

答案 1 :(得分:1)

尽管仍然需要所有警告和建议,否则请尝试以下操作:

  1. 找到您的PHP目录。通常它位于C:\ Program Files \ PHP \ v7.2
  2. 然后转到以下网址: 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文件并将其添加到动态扩展 部分: extension = php_mcrypt.dll
  6. 保存php.ini并重新启动Web服务器。

希望有帮助。

答案 2 :(得分:0)

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

可能是mcrypt使用的非标准空填充的唯一问题。要使用另一个不支持空填充的实现进行解密(它是非标准的),只需解密而不填充,然后删除空填充。

如果您还必须加密mcrypt,只需添加空填充并使用无填充加密。

真的考虑迁移当前加密或添加一些加密符合(或不符合)mcrypt的标记。