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

相关推荐
流星白龙8 分钟前
【C++】36.C++IO流
开发语言·c++
诚信爱国敬业友善1 小时前
常见排序方法的总结归类
开发语言·python·算法
nbsaas-boot2 小时前
Go 自动升级依赖版本
开发语言·后端·golang
架构默片2 小时前
【JAVA工程师从0开始学AI】,第五步:Python类的“七十二变“——当Java的铠甲遇见Python的液态金属
java·开发语言·python
不只会拍照的程序猿3 小时前
从插入排序到希尔排序
java·开发语言·数据结构·算法·排序算法
小哥山水之间3 小时前
在 Python 中操作 Excel 文件
开发语言·python·excel
就爱学编程4 小时前
C语言预编译
c语言·开发语言
和光同尘@4 小时前
1011. A+B和C (15)-PAT乙级真题
c语言·开发语言·数据结构·c++·算法
我荔枝呢!4 小时前
Java中的hashCode和equals方法之间有什么联系
java·开发语言·equals·hashcode
面向未来_4 小时前
JAVA Kotlin Androd 使用String.format()格式化日期
java·开发语言·kotlin