如何在nginx中定义PHP的gethostname()的返回值

时间:2014-12-05 14:38:02

标签: php nginx

我有一个暂存环境,我想使用php的gethostname()来确定我正在运行的是哪台机器。

当我想要“stg.mydomain.com”时,它会返回“mydomain.com”。

我在ubuntu上运行nginx。我曾尝试编辑“/ etc / nginx / fastcgi_params”

的值如下:

fastcgi_param  HOSTNAME          stg.mydomain.com;
fastcgi_param  HTTP_HOST          stg.mydomain.com;
fastcgi_param  HOST_NAME          stg.mydomain.com;

重新启动nginx后,我看到这些值在$ _SERVER中填充,但gethostname()继续返回原始值。

我无法找到此值的设置位置或方式。

2 个答案:

答案 0 :(得分:1)

gethostname()返回的值是操作系统报告的服务器主机名,类似于在命令行中运行不带参数的命令hostname时返回的值。

这意味着它的运行级别比通过HTTP提供的任何Web应用程序更深入,与主机名相关。如果服务器的主机名当前知道服务器本身是正确的,那么您应该从HTTP_HOST超全局获取正确的SERVER_NAME$_SERVER个cgi变量。

但是如果服务器的操作系统没有报告它应该在更深的操作系统层的名称,您可以根据系统的正确方法进行更改。一旦它通过命令行上的hostname报告了正确的名称,PHP的gethostname()也会。

您可以修改/etc/hostname并重启系统,或使用root shell

$ sudo hostname stg.mydomain.com

可能还需要重新启动以确保所有守护程序的运行状态一致。

答案 1 :(得分:0)

也许您可以使用runkit_function_redefine()重新定义gethostname()