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

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

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

Например:

$_SERVER['SERVER_NAME'] 

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

 <?php echo gethostname(); // may output eg,: sandie 

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

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

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

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

Пытаться:

 $servername = trim(`hostname`); 

Чтобы получить имя хоста из командной строки, вам нужно будет также запустить с помощью 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 

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

 php -r "echo gethostname();" 

Печать:

 your_hostname 

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

Вы можете добавить свой 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. ?> 

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

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

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