当前位置: 首页 > 知识库问答 >
问题:

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

牛骞仕
2024-06-08
$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)#amhFatal error: Uncaught Error: Length must be greater than 0 openssl_random_pseudo_bytes(0)

共有2个答案

司徒池暝
2024-06-08

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

巴照
2024-06-08

首先,要理解你遇到的问题,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库的特定指导。

 类似资料:
  • 第一次用AMH,有个问题,如何来升级PHP,NGINX和MYSQL? 安装的时候选择好了版本,之后如何来升级这些东西呢? 没有找到哪里可以升级

  • 我必须在cpanel终端上运行composer来安装和主持laravel项目。但是,它给出了这个错误 我进入

  • 我在maven中使用spring boot 2.3.3.RELEASE和相应的spring boot starter父代。 由于spring4shell CVE,我想将spring-Framework升级到5.2.20。RELEASE而不是已经包含的5.2.8。RELEASE。我尝试从spring-boot-依赖项中覆盖属性。 但它没有起作用。我还查看了spring-boot-starter-we

  • python里调用import paddle时报错如下: "urllib3 v2.0 only supports OpenSSL 1.1.1+, currently " ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with OpenSSL 1.1.0j

  • 问题内容: 我正在尝试更新我的PHP(当前是v:5.3.3,是最新的稳定PHP版本),但它没有发挥作用,它表示没有任何更新。 任何帮助将是有用的。 一直说: 没有软件包标记为更新 问题答案: 正如Jacob所提到的,目前CentOS软件包回购似乎只有PHP 5.3可用。但是这些命令似乎对我有用… 您也可以使用或(如果需要)。 警告! 如果它不能完全解决您的所有依赖性,则可能会破坏您的网站,因此在某

  • 在这里,我在将应用程序导入android studio时面临很多问题。 需要升级gradle版本。

  • 我花了5个多小时关注google、GitHub和StackOverflow的东西。仍然无法将Android SDK版本升级到29.0.3。 在flutter doctor中,它显示了Android SDK29.0.3的未完全安装,但是当我创建一个flutter项目时,它会自动检测旧版本(28.0.3),并试图安装旧版本,而不是新版本。 这是颤振医生。颤振医生命令

  • 问题内容: 如何在CentOS 6.5中升级OpenSSL? 我已经使用了这些命令,但是什么也没有发生: 使用此命令后,我得到了旧版本 问题答案: 请尝试使用此配置行来覆盖默认设置。默认情况下,当您保留前缀时,它将安装在前缀/ usr / local / ssl中。您可能拥有“ / usr / local / ssl / bin / openssl”,而不是覆盖/ usr / bin / open