【发布时间】:2018-05-03 16:40:27
【问题描述】:
我正在尝试将我的 PHP Web 应用程序(一个 RESTful API)从 Apache 转换为 Nginx。
它在 Apache 中运行良好,但代码库当前使用 apache_request_headers() 方法来检索我们用于身份验证的 custom 标头。一个示例标头是auth_system_signature。
我曾希望用getallheaders() 替换对该函数的调用是一个简单的例子。但是,似乎this method is undefined when using php-fpm。
我看到各种"workarounds" on the net 将定义该函数(如果它不存在),但它们似乎都循环在没有我的自定义标头的$_SERVER 上。我很确定如果确实如此,那么我们一开始就不会使用apache_request_headers()。
有没有办法使用 php-fpm 检索请求中的自定义标头,还是我只需要转而使用 php-cgi?
上下文
- 操作系统:Ubuntu 16.04
- PHP 版本:7.0。
【问题讨论】:
-
您确定您的自定义标头不存在于 $_SERVER 中吗?也许this from serverfault 与您的问题很接近?
-
我认为你的东西在那里。通过我找到的链接:nginx.org/en/docs/http/… 我现在将尝试
-
好的,如果我将
underscores_in_headers on添加到我的 nginx.conf 中,那么标题将出现在 $_SERVER 超全局中,前缀为HTTP_,这对我来说已经足够好了。您发布的 stackoverflow 链接建议用连字符替换下划线,但这是 IMO 更好的解决方案。
标签: php nginx http-headers fpm