命令行中的PHP服务器名称

时间:2009-03-09 14:19:01

标签: php command-line command-line-interface

有没有办法从命令行检测运行PHP脚本的服务器的名称?

通过HTTP访问PHP有很多方法可以做到这一点。但似乎没有办法为CLI执行此操作。

例如:

$_SERVER['SERVER_NAME'] 

在命令行中不可用。

9 个答案:

答案 0 :(得分:80)

echo php_uname("n");

请参阅http://php.net/manual/en/function.php-uname.php

答案 1 :(得分:19)

<?php
echo gethostname(); // may output e.g,: sandie

请参阅http://php.net/manual/en/function.gethostname.php

gethostname()是一个便利函数,与php_uname('n')的作用相同,自PHP 5.3起添加

答案 2 :(得分:11)

出于同样的原因,当您从CLI运行PHP时,SERVER_NAME不可用。

当您从CLI运行PHP时,您可以启动自己的PHP解释器,它运行您传递给它的任何代码,而不需要任何类型的服务器。因此,从CLI中,PHP对您未明确告知它的Web服务器一无所知。

答案 3 :(得分:3)

尝试:

$servername = trim(`hostname`);

答案 4 :(得分:3)

要从命令行获取主机名,您还需要使用php -r运行。 在linux上我用过:

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

在我使用过的Windows上:

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

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

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

答案 5 :(得分:3)

您可以将php脚本添加到命令行,为您设置$ _SERVER [&#39; SERVER_NAME&#39;]。 以下是我使用它的方式:

  

C:\ SDK \ php-5.5.25-Win32-VC11-x86 \ php.exe -S localhost:8080 -t   D:\ Projects \ Sites \ mysite router.php

router.php

<?php
$_SERVER['SERVER_NAME'] = 'localhost:8080';
return false;    // serve the requested resource as-is.
?> 

答案 6 :(得分:2)

调用CLI并使用gethostname命令:

php -r "echo gethostname();"

打印:

your_hostname

答案 7 :(得分:1)

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

答案 8 :(得分:-6)

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

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

给我服务器的名称。