Вопрос

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

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

Например:

$_SERVER['SERVER_NAME'] 

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

Это было полезно?

Решение

Другие советы

<?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 ничего не знает о вашем веб-сервере, о чем вы явно не говорите.

Попробуй:

$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(

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

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

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

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

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

<*>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

Вы можете добавить свой php-скрипт в командную строку, который установит для вас $_SERVER['ИМЯ_СЕРВЕРА'].Вот как я это использую:

C:\SDK\php-5.5.25-Win32-VC11-x86\php.exe -Локальный хост S: 8080 -t D:\Projects\Sites\mysite router.php

router.php

<?php
$_SERVER['SERVER_NAME'] = 'localhost:8080';
return false;    // serve the requested resource as-is.
?> 

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

php -r "echo gethostname();"

С принтами:

your_hostname

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

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

print_r(

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

<*>

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

SERVER) var_dump(

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

<*>

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

SERVER) echo

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

<*>

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

SERVER['HOSTNAME']

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top