PHP - 将 Nginx 与 php-fpm 一起使用时获取自定义 Headers
PHP - Get Custom Headers when Using Nginx with php-fpm
我正在尝试将我的 PHP 网络应用程序(RESTful API)从 Apache 转换为 Nginx。
它在 Apache 中运行良好,但代码库当前使用 apache_request_headers()
方法来检索我们用于身份验证的 custom headers .例如 header 是 auth_system_signature
.
我曾希望用 getallheaders(). However, it appears that this method is undefined when using php-fpm 替换对该函数的调用是一个简单的例子。
我看到各种 "workarounds" on the net 将定义函数(如果它不存在),但它们似乎都在 $_SERVER
上循环,而 $_SERVER
没有我的自定义 header。我很确定如果确实如此,那么我们一开始就不会使用 apache_request_headers()
。
有没有办法通过 php-fpm 检索请求中的自定义 header,或者我是否只需要转而使用 php-cgi
?
上下文
- OS: Ubuntu 16.04
- PHP 版本:7.0.
事实证明,默认情况下,Nginx 不会传递带有下划线的 headers。您可以将自定义 headers' 下划线替换为连字符 as others have done, or you could update your nginx.conf file 并设置:
underscores_in_headers on
现在您的 headers 将出现在带有 HTTP_
前缀的 $_SERVER
超全局中。他们也将全部大写。
我正在尝试将我的 PHP 网络应用程序(RESTful API)从 Apache 转换为 Nginx。
它在 Apache 中运行良好,但代码库当前使用 apache_request_headers()
方法来检索我们用于身份验证的 custom headers .例如 header 是 auth_system_signature
.
我曾希望用 getallheaders(). However, it appears that this method is undefined when using php-fpm 替换对该函数的调用是一个简单的例子。
我看到各种 "workarounds" on the net 将定义函数(如果它不存在),但它们似乎都在 $_SERVER
上循环,而 $_SERVER
没有我的自定义 header。我很确定如果确实如此,那么我们一开始就不会使用 apache_request_headers()
。
有没有办法通过 php-fpm 检索请求中的自定义 header,或者我是否只需要转而使用 php-cgi
?
上下文
- OS: Ubuntu 16.04
- PHP 版本:7.0.
事实证明,默认情况下,Nginx 不会传递带有下划线的 headers。您可以将自定义 headers' 下划线替换为连字符 as others have done, or you could update your nginx.conf file 并设置:
underscores_in_headers on
现在您的 headers 将出现在带有 HTTP_
前缀的 $_SERVER
超全局中。他们也将全部大写。