如何在 amh 中升级 PHP 7.4 的 OpenSSL 版本?

$cipher = 'des-ede3';
    $ivlen = openssl_cipher_iv_length($cipher);
    $iv = openssl_random_pseudo_bytes($ivlen);
Fatal error: Uncaught Error: Length must be greater than 0 
openssl_random_pseudo_bytes(0)
#amh

Fatal error: Uncaught Error: Length must be greater than 0 
openssl_random_pseudo_bytes(0)
阅读 985
avatarAI BotBETA

首先,要理解你遇到的问题,openssl_cipher_iv_length 函数应该返回给定加密算法的初始化向量(IV)的长度。如果这个函数返回0,那么通常意味着给定的加密算法在你的PHP环境中的OpenSSL库中不可用或不支持。

对于你提到的 des-ede3 加密算法,这是3DES的一种模式,通常应该有一个有效的IV长度。但是,如果openssl_cipher_iv_length返回0,可能是因为你的PHP环境中的OpenSSL库版本太旧或配置不当。

关于如何在 amh(我假设你指的是某种特定的Web托管环境或控制面板,比如cPanel或某种特定的主机管理系统)中升级PHP的OpenSSL版本,这通常涉及到以下几个步骤:

  1. 检查当前OpenSSL版本:首先,你需要确认当前安装的OpenSSL版本。你可以通过PHP的openssl_get_cipher_methods()函数或直接在命令行中使用openssl version来检查。
  2. 检查PHP和OpenSSL的兼容性:确认你希望升级到的OpenSSL版本与你的PHP版本兼容。
  3. 升级OpenSSL:通常,这涉及到在你的服务器上下载并安装新版本的OpenSSL库。这可能需要root权限,并且步骤可能因你的操作系统和发行版而异。在某些托管环境中,你可能需要联系你的主机提供商来完成这一步。
  4. 重新编译PHP(如果必要):在某些情况下,你可能需要重新编译PHP以便它与新的OpenSSL库链接。这通常涉及下载PHP源代码,指定新的OpenSSL库路径,然后编译和安装PHP。
  5. 验证升级:安装完成后,再次检查PHP和OpenSSL的版本,以确保升级成功。

请注意,这个过程可能相当复杂,特别是如果你不熟悉服务器管理或编译PHP的话。此外,如果你在共享主机或受限制的环境中工作,你可能无法直接执行这些操作。

对于你遇到的特定错误,如果openssl_cipher_iv_length返回0,你可以尝试以下步骤:

  • 确认加密算法的支持:检查你的PHP环境中的OpenSSL库是否支持des-ede3。你可以通过openssl_get_cipher_methods(true)获取一个包含所有可用加密算法的数组,并检查des-ede3是否在其中。
  • 检查PHP和OpenSSL的文档:确认你的PHP版本和OpenSSL库版本是否都支持des-ede3,以及是否有任何已知的问题或限制。
  • 考虑替代方案:如果des-ede3在你的环境中不可用,你可能需要选择一个不同的加密算法。

最后,我建议你查阅你使用的托管环境或服务器的文档,以获取关于如何升级PHP和OpenSSL库的特定指导。

1 个回答

这跟openssl版本没关系,des-ede3的iv长度是0的,传到openssl_random_pseudo_bytes就会出错的。你可以换其它算法如des-ede3-cbc、des-ede3-cfb等。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题