Ответ 1
echo php_uname("n");
Есть ли способ определить имя сервера, на котором запущен PHP script из командной строки?
Существует множество способов сделать это для PHP, доступного через HTTP. Но для 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
SERVER_NAME недоступен при запуске PHP из CLI по той же самой причине.
Когда вы запускаете PHP из CLI, вы начинаете свой собственный PHP-интерпретатор, который запускает любой код, который вы ему передали, без какого-либо сервера. Таким образом, из CLI PHP ничего не знает о вашем веб-сервере, о котором вы явно не говорите.
Try:
$servername = trim(`hostname`);
Вызвать CLI и использовать команду gethostname:
php -r "echo gethostname();"
Печать
your_hostname
Чтобы получить имя хоста из командной строки , вам также нужно будет запустить с помощью 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
Возможно, потому что если вы запускаете script из командной строки, сервер не задействован?
Вы можете добавить свой 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']
Дает мне имя сервера.