Frage

Gibt es eine Möglichkeit, den Namen des Servers einen PHP-Skript von der Kommandozeile zu erkennen?

Es gibt zahlreiche Möglichkeiten, dies über HTTP zugegriffen für PHP zu tun. Aber es scheint keinen Weg, dies für CLI zu tun.

Zum Beispiel:

$_SERVER['SERVER_NAME'] 

ist von der Kommandozeile nicht zur Verfügung.

War es hilfreich?

Lösung

echo php_uname("n");

finden Sie unter http://php.net/manual/en/function.php -uname.php

Andere Tipps

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

Siehe http://php.net/manual/en/function.gethostname.php

gethostname () ist eine Komfortfunktion, die die gleichen wie php_uname('n') tut und wurde als von PHP 5.3

hinzugefügt

Die SERVER_NAME nicht verfügbar ist, wenn Sie PHP von der CLI für diesen sehr gleichen Grund laufen.

Wenn Sie PHP von der CLI ausführen, können Sie Ihre eigene PHP-Interpreter starten, was Code ausgeführt wird Sie an sie übergeben, ohne jede Art von Server. Also von der CLI, weiß PHP nichts über Ihren Web-Server, die Sie nicht explizit sagen.

Versuchen:

$servername = trim(`hostname`);

Um die Hostnamen aus der Kommandozeile zu erhalten Sie müßten auch mit PHP -r laufen. Unter Linux habe ich:

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

Unter Windows habe ich:

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

Darüber hinaus, wenn über die Konsole PHP zugegriffen bietet nicht viele der klassischen $ _SERVER Werte, sondern auf dem Server zugegriffen ich nur die folgenden Tasten:

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

Sie können Ihre PHP-Skript hinzufügen Linie zu befehlen, die $ _SERVER [ ‚SERVER_NAME‘] für Sie festgelegt wird. Hier ist, wie ich verwende es:

  

C: \ SDK \ php-5.5.25-Win32-VC11-x86 \ php.exe ES 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.
?> 

Rufen Sie die CLI und verwenden Sie den Befehl gethostname:

php -r "echo gethostname();"

Prints:

your_hostname

Vielleicht, weil, wenn Sie einen Skript aus der Befehlszeile ausführen, kein Server beteiligt ist?

Einer von ihnen kann den Servernamen haben:

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

Gibt mir den Namen des Servers.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top