请教大家 PHP 的 $_SERVER 和 http 请求的关系?

2019-02-25 17:14:43 +08:00
 NicolayShi
如题。
2781 次点击
所在节点    PHP
3 条回复
ChoateYao
2019-02-25 17:20:34 +08:00
$_SERVER 跟 HTTP 请求没有直接关系,跟上层的 Nginx、PHP-FPM、PHP-CLI 之类的有直接关系
joyme
2019-02-25 17:39:05 +08:00
以 nginx+php-fpm 为例,是 nginx 通过 fastcgi 协议,将 http 请求的一些信息传递给 php-fpm,然后 php-fpm 将信息存在$_SERVER 中。
jevonszmx
2019-02-27 17:48:07 +08:00
官网说明很详细的: http://php.net/manual/zh/reserved.variables.server.php (赞一下 php 官方手册,真的好)

比如这个数组怎来的:

```
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。
```


比如可能有哪些字段:

```
不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。这也就意味着大量的此类变量都会在» CGI 1.1 规范中说明,所以应该仔细研究一下。


在 $_SERVER 中,你也许能够,也许不能够找到下面的这些元素。
```

比如提示你,命令行需要注意:

```
注意,如果以命令行方式运行 PHP,下面列出的元素几乎没有有效的(或是没有任何实际意义的)。
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/538566

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX