php $_SERVER[‘REQUEST_SCHEME‘] 获取不到值

来源:csdn博客 分类: 文章浏览史 发布时间:2023-07-02 21:53:18 最后更新:2023-07-02 浏览:215
转载声明:
本文为摘录自“csdn博客”,版权归原作者所有。
温馨提示:
为了更好的体验,请点击原文链接进行浏览
摘录时间:
2023-07-02 21:53:18

今天在部署一套php开源系统,发现生成的 url 少了 http 所以跟了一遍代码发现 $_SERVER 中既然没有REQUEST_SCHEME字段,

后来尝试在 nginx 配置文件中加入以下代码无效

  1. proxy_set_header X-Forwarded-Proto  $scheme;  

复制代码



无奈只能通过修改程序解决

  1. if ( (! empty($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] == 'https') || (! empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (! empty($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443') ) {
  2.     $_SERVER['REQUEST_SCHEME'] = 'https';
  3. } else {
  4.     $_SERVER['REQUEST_SCHEME'] = 'http';
  5. }

复制代码


解决了之后查到还有这个方法,不过没有尝试,如果遇到同样问题的同学可以尝试下
 

  1. fastcgi_param REQUEST_SCHEME $scheme.

复制代码


虽然改程序能解决,但一些开源程序还是挺头疼的,个人建议希望官方能默认支持我的环境
centos7.4 + bt5.3.0 + Nginx -Tengine2.2

php $_SERVER['REQUEST_SCHEME'] 获取不到值 - Linux面板 - 宝塔面板论坛

环境windows 2003+iis6

$_SERVER['REQUEST_URI'] 怎么测试都是空值,网上查了查很纠结的结果,在此记录一下

$_SERVER['REQUEST_URI']在iis下就是空的,只有apache下才有值,解决方法 用$_SERVER['QUERY_STRING']

替换吧。
 

<?php
// 说明:获取 _SERVER['REQUEST_URI'] 值的通用解决方案
function request_uri()
{
if (isset($_SERVER['REQUEST_URI']))
{
$uri = $_SERVER['REQUEST_URI'];
}
else
{
if (isset($_SERVER['argv']))
{
$uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0];
}
else
{
$uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING'];
}
}
return $uri;
}
?>

 

php技术微信