解决问题 PHP $_SERVER[‘HTTPS‘] 没有值

遇到的问题:

最近重新安装了nginx+php,目前http和https都支持,编写代码判断是否是https请求:

php 复制代码
function IsHttpsRequest() {
   if (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') {
       return TRUE;
   } elseif (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) === 'https') {
       return TRUE;
   } elseif (!empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') {
       return TRUE;
   }
   return FALSE;
}

一般判断 $_SERVER['HTTPS'] 值就可以了,调试代码的时候发现没有这个值。

解决方法:

网上找到的解决办法记录下。

需要在nginx配置文件中加入:

复制代码
fastcgi_param HTTPS $https if_not_empty;

刚开始看到 fastcgi_param 的时候,感觉优点眼熟,后来发现nginx和php请求相关的默认配置有包含文件:

复制代码
location ~ \.php$ {
...
include fastcig.conf;
...
}

文件 fastcig.conf 中定义了很多 fastcgi_param ,可以把 fastcgi_param HTTPS https if_not_empty; 添加到文件 fastcig.conf 中,刷新nginx配置,再调试php代码就能读取到 _SERVER['HTTPS']

相关推荐
Gofarlic_oms12 分钟前
制定企业Citrix虚拟化软件资产管理政策框架
运维·服务器·开发语言·matlab·负载均衡
添砖java。。。8 分钟前
java实现mqtt链接并控制门锁设备
java·开发语言
codeejun18 分钟前
每日一Go-53、Go微服务--限流与降级
开发语言·微服务·golang
阿里嘎多学长19 分钟前
2026-04-17 GitHub 热点项目精选
开发语言·程序员·github·代码托管
Wadli21 分钟前
集群C++聊天服务器
服务器·开发语言·c++
凭君语未可24 分钟前
为什么需要代理?从一个基础问题理解 JDK 静态代理
java·开发语言
农村小镇哥24 分钟前
PDO介绍+PDO增删改查+PDO事物处理+DPO封装类
php
luoqice25 分钟前
利用flv库读取flv文件时长c程序
c语言·开发语言
NotFound48628 分钟前
Go语言中的图形界面开发实战解析:从GUI到WebAssembly
开发语言·golang·wasm
Rust研习社1 小时前
Rust Default 特征详解:轻松实现类型默认值
开发语言·后端·rust