代码之家  ›  专栏  ›  技术社区  ›  Justin Noel

命令行中的php服务器名称

  •  34
  • Justin Noel  · 技术社区  · 17 年前

    是否有方法从命令行检测运行PHP脚本的服务器的名称?

    对于通过HTTP访问的PHP,有许多方法可以做到这一点。但似乎没有一种方法可以为CLI做到这一点。

    例如:

    $_SERVER['SERVER_NAME'] 
    

    在命令行中不可用。

    9 回复  |  直到 17 年前
        1
  •  77
  •   Uwe Mesecke    17 年前
        2
  •  19
  •   ʰᵈˑ    11 年前
    <?php
    echo gethostname(); // may output e.g,: sandie
    

    见 http://php.net/manual/en/function.gethostname.php

    gethostname()是一个方便函数,其作用与 php_uname('n') 从php 5.3开始添加

        3
  •  11
  •   mikl    17 年前

    出于同样的原因,当您从cli运行php时,服务器名不可用。

    从cli运行php时,启动自己的php intepreter,运行传递给它的任何代码,而不使用任何类型的服务器。因此,从CLI来看,PHP对Web服务器一无所知,而您没有明确地告诉它。

        4
  •  3
  •   Thomas Hunter II    15 年前

    尝试:

    $servername = trim(`hostname`);
    
        5
  •  3
  •   Eric Leschinski Mr. Napik    12 年前

    为了从 命令行 您还需要使用php-r运行。 在我使用的Linux上:

    ~#php -r 'echo php_uname("n");'
    hostname
    

    在我使用的Windows上:

    D:\xampp\php>php -r "echo php_uname('n');"
    MB-PC
    

    此外,当通过控制台访问时,php不提供许多经典的$\u服务器值,但在我访问的服务器上,只有以下键:

    root@hermes:~# php -r 'foreach($_SERVER as $key =>$value){echo $key.",";}'
    TERM,SHELL,SSH_CLIENT,SSH_TTY,USER,LS_COLORS,MAIL,PATH,PWD,LANG,SHLVL,HOME,LOGNAME,SSH_CONNECTION,LESSOPEN,LESSCLOSE,_,PHP_SELF,SCRIPT_NAME,SCRIPT_FIL
    ENAME,PATH_TRANSLATED,DOCUMENT_ROOT,REQUEST_TIME,argv,argc
    
        6
  •  3
  •   Vladyslav Litunovsky    11 年前

    您可以将您的PHP脚本添加到命令行,该命令行将为您设置$\u server['server\u name']。 以下是我如何使用它:

    C:\sdk\php-5.5.25-win32-vc11-x86\php.exe-s本地主机:8080-t d:\projects\sites\mysite router.php

    路由协议

    <?php
    $_SERVER['SERVER_NAME'] = 'localhost:8080';
    return false;    // serve the requested resource as-is.
    ?> 
    
        7
  •  2
  •   Eric Leschinski Mr. Napik    12 年前

    调用cli并使用gethostname命令:

    php -r "echo gethostname();"
    

    印刷品:

    your_hostname
    
        8
  •  1
  •   anon    17 年前

    可能是因为如果从命令行运行脚本,那么就不涉及服务器了?

        9
  •  -6
  •   Eric Leschinski Mr. Napik    12 年前

    其中一个可能具有服务器名称:

    print_r($_SERVER)
    var_dump($_SERVER) 
    echo $_SERVER['HOSTNAME']
    

    提供服务器的名称。

    推荐文章