Имя сервера PHP из командной строки

Есть ли способ определить имя сервера, на котором запущен PHP script из командной строки?

Существует множество способов сделать это для PHP, доступного через HTTP. Но для CLI не существует способа сделать это.

Например:

$_SERVER['SERVER_NAME'] 

недоступен из командной строки.

Ответ 2

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

См. http://php.net/manual/en/function.gethostname.php

gethostname() - это функция удобства, которая делает то же самое, что и php_uname('n'), и была добавлена ​​с PHP 5.3

Ответ 3

SERVER_NAME недоступен при запуске PHP из CLI по той же самой причине.

Когда вы запускаете PHP из CLI, вы начинаете свой собственный PHP-интерпретатор, который запускает любой код, который вы ему передали, без какого-либо сервера. Таким образом, из CLI PHP ничего не знает о вашем веб-сервере, о котором вы явно не говорите.

Ответ 4

Try:

$servername = trim(`hostname`);

Ответ 5

Вызвать CLI и использовать команду gethostname:

php -r "echo gethostname();"

Печать

your_hostname

Ответ 6

Чтобы получить имя хоста из командной строки , вам также нужно будет запустить с помощью php -r. В linux я использовал:

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

В окнах я использовал:

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

Кроме того, при доступе через консоль PHP не предоставляет многие из классических значений $_SERVER, но на сервере, к которому я обращался, имеет только следующие ключи:

[email protected]:~# 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

Ответ 7

Возможно, потому что если вы запускаете script из командной строки, сервер не задействован?

Ответ 8

Вы можете добавить свой PHP скрипт в командную строку, которая установит для вас $_SERVER ['SERVER_NAME']. Вот как я его использую:

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.
?> 

Ответ 9

У одного из них может быть имя сервера:

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

Дает мне имя сервера.