解决问题 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']

相关推荐
常利兵1 分钟前
Kotlin抽象类与接口:相爱相杀的编程“CP”
android·开发语言·kotlin
2501_944448472 分钟前
数据可视化 Kotlin KMP OpenHarmony图表生成
开发语言·信息可视化·harmonyos
Arkerman_Liwei2 分钟前
Android 新开发模式深度实践:Kotlin + 协程 + Flow+MVVM
android·开发语言·kotlin
xinhuanjieyi6 分钟前
MCP分析某wordpress网站 时间所在的背景动画,并用php框架webman复刻下来
开发语言·php
jwn9998 分钟前
Laravel1.x:PHP框架的初心与革新
开发语言·php
蜡台10 分钟前
JavaScript async和awiat 使用
开发语言·前端·javascript·async·await
蹦哒11 分钟前
Kotlin DSL 风格编程详解
android·开发语言·kotlin
枫叶丹412 分钟前
【HarmonyOS 6.0】ArkWeb 深度解读:getPageOffset20 与网页滚动偏移量获取能力的演进
开发语言·华为·harmonyos
独特的螺狮粉12 分钟前
开源鸿蒙跨平台Flutter开发:室内探险游戏应用
开发语言·flutter·游戏·华为·开源·harmonyos·鸿蒙
坏小虎13 分钟前
~/.zshrc 和 ~/.bash_profile 详细介绍与区别
开发语言·bash