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'] 获取不到值 - 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;
}
?>