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

相关推荐
529宝宝起名网2 小时前
用 Python 开发历史名字查询与起名灵感工具:从古籍人物数据库到名字文化故事生成
开发语言·前端·python
右耳朵猫AI2 小时前
PHP周刊2026W37 | Symfony 三维护版齐发、Laravel AI SDK 0.11、LSP 服务器上线
后端·php·laravel
ocean21032 小时前
2025-2026年C++专题大厂面试高频问题
开发语言·c++·面试
Anthony_2312 小时前
Nginx基础
服务器·nginx·http·https·edge浏览器·web
白远山3 小时前
健身场馆无人自动化系统实战指南:从架构设计到部署全流程解析
java·开发语言·架构·需求分析
郝学胜-神的一滴3 小时前
C++20模板元编程 02:吃透模板基础核心四大核心知识点
开发语言·数据结构·c++·程序人生·软件工程·visual studio
troy1283 小时前
Visual Studio Code 详细教程:从入门到高效开发
开发语言·python
泡海椒3 小时前
jquick-pdf 超详细入门教程:Java 轻量级 HTML 模板生成 PDF 工具
java·开发语言
八年。。3 小时前
WSL学习(三)——搭建Linux + C++ + SOME/IP 基础开发环境
开发语言·笔记·ubuntu
孙启超3 小时前
【AI开发之Rust】第 6 课:结构体、枚举与方法 —— 开始定义自己的类型
开发语言·人工智能·后端·ai·rust