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.

È stato utile?

Soluzione

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top