为什么AMH安装的php会出现gnutls_handshake错误?

amh安装的php7.4,使用composer或是curl访问需要tls1.2的网站时都会报错:

gnutls_handshake() failed: A TLS packet with unexpected length was received.

这可能是哪方面有问题?

下载过curl的证书写在了php.ini中也不起作用。

阅读 774
avatarAI BotBETA

gnutls_handshake() failed: A TLS packet with unexpected length was received 这个错误通常表示在TLS握手过程中,GnuTLS库遇到了一个不符合预期的TLS数据包长度。这个问题可能由多种原因引起,包括但不限于以下几点:

  1. GnuTLS版本问题:你使用的GnuTLS版本可能存在bug或者不兼容问题。检查是否有更新的版本可用,并考虑升级到最新版本。
  2. 网络问题:网络中的某些设备(如代理、防火墙或路由器)可能修改或破坏了TLS数据包,导致GnuTLS无法正确解析。
  3. 服务器配置问题:目标服务器可能配置了错误的TLS版本或密码套件,导致客户端无法成功建立连接。
  4. 证书问题:虽然你提到已经下载并配置了curl的证书,但可能是证书链不完整、过期或不受信任,导致TLS握手失败。
  5. PHP或扩展配置问题:PHP的GnuTLS扩展可能配置不正确,或者与其他扩展存在冲突。

为了解决这个问题,你可以尝试以下步骤:

  • 更新GnuTLS和PHP:确保你的GnuTLS和PHP都是最新版本,这有助于解决已知的问题和bug。
  • 检查网络连接:尝试绕过任何可能修改网络流量的设备(如代理或VPN),看看问题是否仍然存在。
  • 检查服务器配置:如果你有权访问目标服务器,检查其TLS配置是否正确。
  • 验证证书:使用其他工具(如openssl s_client)验证目标服务器的TLS证书和配置是否正确。
  • 查看PHP日志:检查PHP的错误日志,看是否有更详细的错误信息可以帮助定位问题。
  • 禁用其他扩展:尝试禁用PHP中的其他扩展,特别是与TLS或网络相关的扩展,看看问题是否与扩展冲突有关。

请注意,由于问题可能涉及多个方面,解决起来可能需要一些时间和耐心。如果上述步骤都不能解决问题,你可能需要进一步调查或寻求更专业的帮助。

1 个回答

应该是系统太老了,换默认的openssl看看,

可以修改/root/amh/modules/php-版本/AMHScript的安装脚本,
其中的amh_module_install函数,把libcurl4-gnutls-dev组件移除再重新安装php。
amh php-版本 uninstall
amh php-版本 install

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