Имя сервера PHP из командной строки - PullRequest
36 голосов
/ 09 марта 2009

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

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

Например:

$_SERVER['SERVER_NAME'] 

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

Ответы [ 9 ]

80 голосов
/ 09 марта 2009
20 голосов
/ 28 декабря 2010
<?php
echo gethostname(); // may output e.g,: sandie

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

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

11 голосов
/ 09 марта 2009

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

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

3 голосов
/ 06 июня 2015

Вы можете добавить свой 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.
?> 
3 голосов
/ 09 апреля 2013

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

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

На окнах, которые я использовал:

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
3 голосов
/ 09 марта 2009

Попробуйте:

$servername = trim(`hostname`);
2 голосов
/ 05 мая 2010

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

php -r "echo gethostname();"

Печать:

your_hostname
1 голос
/ 09 марта 2009

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

0 голосов
/ 22 ноября 2012

Один из них может иметь имя сервера:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...