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

相关推荐
guygg881 天前
两轮车MATLAB仿真程序的实现方法
开发语言·matlab
yugi9878381 天前
异构网络下信道环境建模方法及应用
开发语言·网络
小北方城市网1 天前
第 11 课:Python 全栈项目进阶与职业发展指南|从项目到职场的无缝衔接(课程终章・进阶篇)
大数据·开发语言·人工智能·python·数据库架构·geo
Thetimezipsby1 天前
Go(GoLang)语言基础、知识速查
开发语言·后端·golang
以太浮标1 天前
华为eNSP模拟器综合实验之-BGP路由协议的配置解析
服务器·开发语言·php
宠..1 天前
优化文件结构
java·服务器·开发语言·前端·c++·qt
源码梦想家1 天前
多语言高性能异步任务队列与实时监控实践:Python、Java、Go、C++实战解析
开发语言·python
百***78751 天前
Gemini 3.0 Pro与2.5深度对比:技术升级与开发实战指南
开发语言·python·gpt
wjs20241 天前
C# 命名空间(Namespace)
开发语言
CoderIsArt1 天前
基于iSCSI的光存储软件架构设计 (Windows + Qt版本)
开发语言·windows·qt