Nome server PHP dalla riga di comando
-
06-07-2019 - |
Domanda
Esiste un modo per rilevare il nome del server che esegue uno script PHP dalla riga di comando?
Esistono numerosi modi per farlo con PHP a cui si accede tramite HTTP. Ma non sembra esserci un modo per farlo per la CLI.
Ad esempio:
Esiste un modo per rilevare il nome del server che esegue uno script PHP dalla riga di comando?
Esistono numerosi modi per farlo con PHP a cui si accede tramite HTTP. Ma non sembra esserci un modo per farlo per la CLI.
Ad esempio:
<*>
non è disponibile dalla riga di comando.
SERVER['SERVER_NAME']
non è disponibile dalla riga di comando.
Soluzione
echo php_uname("n");
Altri suggerimenti
<?php
echo gethostname(); // may output e.g,: sandie
Vedi http://php.net/manual/en/function.gethostname.php
gethostname () è una funzione di convenienza che fa lo stesso di php_uname ('n')
ed è stato aggiunto a partire da PHP 5.3
SERVER_NAME non è disponibile quando si esegue PHP dalla CLI per lo stesso motivo.
Quando si esegue PHP dalla CLI, si avvia il proprio integer PHP che esegue qualsiasi codice passato ad esso, senza alcun tipo di server. Quindi dalla CLI, PHP non sa nulla del tuo server web che non lo dici esplicitamente.
Prova:
$servername = trim(`hostname`);
Per ottenere il nome host dalla riga di comando devi eseguire anche usando php -r. Su Linux ho usato:
~#php -r 'echo php_uname("n");'
hostname
Su Windows ho usato:
D:\xampp\php>php -r "echo php_uname('n');"
MB-PC
Inoltre, quando si accede tramite la console PHP non fornisce molti dei classici valori $ _SERVER ma sul server a cui ho effettuato l'accesso ha solo le seguenti chiavi:
root@hermes:~# php -r 'foreach( Per ottenere il nome host dalla riga di comando devi eseguire anche usando php -r.
Su Linux ho usato:
~#php -r 'echo php_uname("n");'
hostname
Su Windows ho usato:
D:\xampp\php>php -r "echo php_uname('n');"
MB-PC
Inoltre, quando si accede tramite la console PHP non fornisce molti dei classici valori $ _SERVER ma sul server a cui ho effettuato l'accesso ha solo le seguenti chiavi:
<*>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
Puoi aggiungere il tuo script php alla riga di comando che imposterà $ _SERVER ['SERVER_NAME'] per te. Ecco come lo sto usando:
C: \ SDK \ php-5.5.25-Win32-VC11-x86 \ php.exe -S localhost: 8080 -t D: \ Progetti \ Siti \ mysite router.php
router.php
<?php
Puoi aggiungere il tuo script php alla riga di comando che imposterà $ _SERVER ['SERVER_NAME'] per te.
Ecco come lo sto usando:
C: \ SDK \ php-5.5.25-Win32-VC11-x86 \ php.exe -S localhost: 8080 -t
D: \ Progetti \ Siti \ mysite router.php
router.php
<*>SERVER['SERVER_NAME'] = 'localhost:8080';
return false; // serve the requested resource as-is.
?>
Chiama la CLI e usa il comando gethostname:
php -r "echo gethostname();"
Stampe:
your_hostname
Forse perché se si esegue uno script dalla riga di comando, nessun server è coinvolto?
Uno di questi potrebbe avere il nome del server:
print_r( Uno di questi potrebbe avere il nome del server:
<*>
Mi dà il nome del server.
SERVER)
var_dump( Uno di questi potrebbe avere il nome del server:
<*>
Mi dà il nome del server.
SERVER)
echo Uno di questi potrebbe avere il nome del server:
<*>
Mi dà il nome del server.
SERVER['HOSTNAME']
Mi dà il nome del server.