V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NicolayShi
V2EX  ›  PHP

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

  •  
  •   NicolayShi · 2019-02-25 17:14:43 +08:00 · 2924 次点击
    这是一个创建于 2132 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题。
    3 条回复    2019-02-27 17:48:07 +08:00
    ChoateYao
        1
    ChoateYao  
       2019-02-25 17:20:34 +08:00
    $_SERVER 跟 HTTP 请求没有直接关系,跟上层的 Nginx、PHP-FPM、PHP-CLI 之类的有直接关系
    joyme
        2
    joyme  
       2019-02-25 17:39:05 +08:00
    以 nginx+php-fpm 为例,是 nginx 通过 fastcgi 协议,将 http 请求的一些信息传递给 php-fpm,然后 php-fpm 将信息存在$_SERVER 中。
    jevonszmx
        3
    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,下面列出的元素几乎没有有效的(或是没有任何实际意义的)。
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2660 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 01:50 · PVG 09:50 · LAX 17:50 · JFK 20:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.