有没有一种方法可以从命令行检测运行 PHP 脚本的服务器名称?
有许多方法可以通过 HTTP 访问 PHP 进行此操作。但是似乎没有办法对 CLI 进行此操作。
例如:
$_SERVER['SERVER_NAME']
无法从命令行中使用。
有没有一种方法可以从命令行检测运行 PHP 脚本的服务器名称?
有许多方法可以通过 HTTP 访问 PHP 进行此操作。但是似乎没有办法对 CLI 进行此操作。
例如:
$_SERVER['SERVER_NAME']
无法从命令行中使用。
echo php_uname("n");
<?php
echo gethostname(); // may output e.g,: sandie
参见http://php.net/manual/en/function.gethostname.php
gethostname()是一个方便的函数,与php_uname('n')
执行相同的操作,并在PHP 5.3中添加。
出于同样的原因,在从CLI运行PHP时,SERVER_NAME不可用。
当您从CLI运行PHP时,您启动自己的PHP解释器,运行您传递给它的任何代码,没有任何类型的服务器。因此,从CLI中,PHP对您未明确告知的Web服务器一无所知。
router.phpC:\ SDK \ php-5.5.25-Win32-VC11-x86 \ php.exe -S localhost:8080 -t D:\ Projects \ Sites \ mysite router.php
<?php
$_SERVER['SERVER_NAME'] = 'localhost:8080';
return false; // serve the requested resource as-is.
?>
尝试:
$servername = trim(`hostname`);
~#php -r 'echo php_uname("n");'
hostname
在Windows上,我使用:
D:\xampp\php>php -r "echo php_uname('n');"
MB-PC
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
调用CLI并使用gethostname命令:
php -r "echo gethostname();"
输出:
your_hostname
其中一个可能有服务器名称:
print_r($_SERVER)
var_dump($_SERVER)
echo $_SERVER['HOSTNAME']
返回服务器的名称。