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

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

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

proxy_set_header X-Forwarded-Proto  $scheme;  

复制代码

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

if ( (! empty($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] == 'https') || (! empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (! empty($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443') ) {

$_SERVER['REQUEST_SCHEME'] = 'https';

} else {

$_SERVER['REQUEST_SCHEME'] = 'http';

}

复制代码

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

fastcgi_param REQUEST_SCHEME $scheme.

复制代码

虽然改程序能解决,但一些开源程序还是挺头疼的,个人建议希望官方能默认支持我的环境

centos7.4 + bt5.3.0 + Nginx -Tengine2.2

你可能感兴趣的:(php $_SERVER['REQUEST_SCHEME'] 获取不到值)