PHP getenv('HOSTNAME')

Dzi*_*mid 4 php linux environment-variables

在CLI模式下,正确getenv('HOSTNAME')返回HOSTNAME环境变量,但在脚本中调用时返回FALSE.

为什么?如何在脚本中获取HOSTNAME变量?

ghb*_*att 7

HOSTNAME在Apache使用的环境中不可用,但它通常在CLI使用的环境中可用.

对于PHP> = 5.3.0,请使用:

$hostname = gethostname();

对于PHP <5.3.0但是> = 4.2.0使用此:

$hostname = php_uname('n');

对于PHP <4.2.0,请使用:

$hostname = getenv('HOSTNAME'); 
if(!$hostname) $hostname = trim(`hostname`); 
if(!$hostname) $hostname = exec('echo $HOSTNAME');
if(!$hostname) $hostname = preg_replace('#^\w+\s+(\w+).*$#', '$1', exec('uname -a')); 
Run Code Online (Sandbox Code Playgroud)


mar*_*rio 6

HOSTNAME 不是CGI环境变量,因此不存在于普通的PHP脚本中.

但你可以选择使用

$hostname = `hostname`;     // exec backticks
Run Code Online (Sandbox Code Playgroud)

或者阅读系统配置文件:

$hostname = file_get_contents("/etc/hostname");   // also only U*ix
Run Code Online (Sandbox Code Playgroud)

但大多数PHP脚本应该只使用$_SERVER["SERVER_NAME"]或客户端请求$_SERVER["HTTP_HOST"]

  • `/ etc/hostname`是非常linuxy.不要指望U*ix拥有它. (2认同)