【问题标题】:PHP getenv('HOSTNAME')PHP getenv('主机名')
【发布时间】:2011-08-29 13:45:39
【问题描述】:

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

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

【问题讨论】:

    标签: php linux environment-variables


    【解决方案1】:

    HOSTNAME 在 Apache 使用的环境中不可用,尽管它通常在 CLI 使用的环境中可用。

    对于PHP >= 5.3.0 use this

    $hostname = gethostname();

    对于PHP < 5.3.0 but >= 4.2.0 use this

    $hostname = php_uname('n');

    对于 PHP

    $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')); 
    

    【讨论】:

      【解决方案2】:

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

      但你也可以选择使用

      $hostname = `hostname`;     // exec backticks
      

      或者读取系统配置文件:

      $hostname = file_get_contents("/etc/hostname");   // also only U*ix
      

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

      【讨论】:

      • 感谢您为我解决这个问题。我想我会选择 SERVER_NAME。
      • /etc/hostname 非常 linuxy。不要指望 U*ix 拥有它。
      【解决方案3】:

      您的环境可能已在网络服务器或 php-fcgi/fpm 启动脚本中进行了清理,因此有关启动帐户的敏感信息不会泄露给网络服务器。

      【讨论】:

        【解决方案4】:

        我想你想要HTTP_HOST,当你在 CLI 模式下访问它时它是空的。

        【讨论】:

          【解决方案5】:

          试试这样的可能吗?

          function getHostName()
          {
            //if we are in the shell return the env hostname
            if(array_key_exists('SHELL', $_ENV))
            {
               return getenv('HOSTNAME');
            }
            return $_SERVER['SERVER_NAME'];
          }
          

          【讨论】:

            【解决方案6】:

            还有一个ENV 变量,您可以通过&lt;?php print_r($_ENV); ?&gt; 访问。 但我得到了同样的结果:cli 的变量比服务器多,但它一定是配置问题。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-08-28
              • 1970-01-01
              • 2012-02-06
              • 1970-01-01
              • 1970-01-01
              • 2019-04-22
              • 2016-10-23
              • 1970-01-01
              相关资源
              最近更新 更多