【问题标题】:PHP getallheaders alternativePHP getallheaders 替代
【发布时间】:2011-08-26 06:39:40
【问题描述】:

我正在尝试在我的服务器上从 apache 切换到 nginx。这里唯一的问题是我在 PHP 脚本中使用的 getallheaders() 函数不适用于 Nginx。我已经尝试过用户在 getallheaders finction 上的 php 站点上贡献了注释,但这并没有返回所有请求标头。

请告诉我如何解决这个问题。我真的很想切换到 Nginx。

【问题讨论】:

  • 您缺少哪些标题?您确定您缺少的标头确实是请求标头而不是 apache 设置的内容吗?
  • 我缺少客户端发送的自定义标头,例如我的应用需要 ownet-id 字段,如果没有 getallheaders 就无法访问。
  • 它在 PHP 5.4 FastCGI 上可用。

标签: php apache nginx


【解决方案1】:

你仍然可以使用它,但你必须像这里一样重新定义/重写它

http://www.php.net/manual/en/function.getallheaders.php#84262

【讨论】:

  • 我用过这个方法但是没有运气。它没有给我我想要的所有标题。例如,我的应用程序要求客户端发送“owner-id”标头。这是除 getallheaders() 之外的任何函数都无法获得的。
  • 每个页面发送的标头值是否相同?还是每个页面都不一样?
  • 就像后来有人在页面上发布的一样,请确保您将 Content-Type 和 Content-Length 考虑在内,因为它们不遵循相同的命名约定。看到这个帖子:php.net/manual/en/function.getallheaders.php#104307
【解决方案2】:

Owner-ID 的请求标头将由 nginx 作为 $_SERVER['HTTP_OWNER_ID'] 传递给 php。所有请求标头都以类似的方式传递。

【讨论】:

  • 我刚刚通过调用包含 使用 curl -H 'Owner-ID: foobar' 和 $_SERVER['HTTP_OWNER_ID'] 的值为 foobar。您是否可能通过关闭 fastcgi_pass_request_headers 来禁用此行为?
  • 我已经卸载了 nginx... 它可能以这种方式提供标头,但还有许多其他问题,例如您无法在不重新编译服务器的情况下安装模块。在生产服务器上部署这很烦人。我现在想留在 apache 上,直到 nginx 变得足够成熟。无论如何感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2017-05-16
  • 1970-01-01
  • 2021-05-02
  • 2011-03-30
  • 2011-10-21
  • 2011-08-30
  • 2010-11-23
  • 1970-01-01
相关资源
最近更新 更多