我有一个暂存环境,我想使用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()继续返回原始值。
我无法找到此值的设置位置或方式。
答案 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()
。