Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
某些服务器上缺少PHP 8$_服务器[';SSL#u协议';],如何确定加密协议和版本_Php_Php 8_Tls1.3 - Fatal编程技术网

某些服务器上缺少PHP 8$_服务器[';SSL#u协议';],如何确定加密协议和版本

某些服务器上缺少PHP 8$_服务器[';SSL#u协议';],如何确定加密协议和版本,php,php-8,tls1.3,Php,Php 8,Tls1.3,我们最近将服务器升级到PHP8,其中一台服务器上缺少$\u SERVER['SSL\u PROTOCOL']变量 我在php.net上找不到对它的任何引用 我知道有些变量是从系统的其他部分提取的,尽管我不熟悉PHP从何处获取这个特定变量 我用引号操作符找到的所有搜索结果只显示了不相关的数据 我试图查看变量名是否被更改为类似于TLS_PROTOCOL的内容,因为SSL已经不相关一段时间了 我的目标是确保客户机使用TLS 1.2或TLS 1.3,这是实现这一目标的关键组件。如何获取$\u SER

我们最近将服务器升级到PHP8,其中一台服务器上缺少
$\u SERVER['SSL\u PROTOCOL']
变量

  • 我在php.net上找不到对它的任何引用
  • 我知道有些变量是从系统的其他部分提取的,尽管我不熟悉PHP从何处获取这个特定变量
  • 我用引号操作符找到的所有搜索结果只显示了不相关的数据
  • 我试图查看变量名是否被更改为类似于
    TLS_PROTOCOL
    的内容,因为SSL已经不相关一段时间了

我的目标是确保客户机使用TLS 1.2或TLS 1.3,这是实现这一目标的关键组件。如何获取
$\u SERVER['SSL\u PROTOCOL']
或至少确定客户端通过PHP使用的网络加密类型的协议和协议版本?

SSL/TLS加密由您的web服务器处理,而不是由PHP处理,因此必须在那里设置此变量。PHP的升级是巧合——是您升级或重新构建的其他东西造成了这种差异

如果您使用的是Apache,除非您设置了
SSLOptions+StdEnvVars
,否则将禁用此信息以提高性能。请参阅位于的文档


快速搜索表明Nginx根本没有设置这个变量。

可能是一个愚蠢的问题,但该服务器使用Apache提供https页面吗?@SiebeJongebloed不是一个愚蠢的问题,我应该提到Apache,是的。“我的目标是确保客户端使用TLS 1.2或TLS 1.3”你不能禁用HTTP服务器上的其他协议吗?@miken32是的,我已经禁用了1.1及更高版本:这样就不会有这样的客户端访问你的PHP代码。我知道Apache会处理它,我只是在完成所有搜索、测试之后没有建立完全连接……我很难让它正常工作;文档中说它可以使用
.htaccess
文件,我甚至已经直接重新启动了服务器几次以进行测试,什么都没有;e、 g.
SSLOptions+StdEnvVars+ExportCertData
。“我做错了什么?”约翰,你说“在一台服务器上”找不到它;据推测,该服务器的配置存在一些差异。也许是有什么东西专门把它关掉了?叹气这是一个cPanel服务器,所以我会打电话给我的主机检查一下。通常情况下,如果是这样的话,那就是cPanel。。。我会回来报到的。