Pregunta

¿Hay alguna forma de detectar el nombre del servidor que ejecuta un script PHP desde la línea de comandos?

Hay numerosas formas de hacer esto para PHP al que se accede a través de HTTP. Pero no parece haber una manera de hacer esto para CLI.

Por ejemplo:

¿Hay alguna forma de detectar el nombre del servidor que ejecuta un script PHP desde la línea de comandos?

Hay numerosas formas de hacer esto para PHP al que se accede a través de HTTP. Pero no parece haber una manera de hacer esto para CLI.

Por ejemplo:

<*>

no está disponible desde la línea de comando.

SERVER['SERVER_NAME']

no está disponible desde la línea de comando.

¿Fue útil?

Solución

Otros consejos

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

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

gethostname () es una función práctica que hace lo mismo que php_uname ('n') y se agregó a partir de PHP 5.3

SERVER_NAME no está disponible cuando ejecuta PHP desde la CLI por esa misma razón.

Cuando ejecuta PHP desde la CLI, inicia su propio intérprete PHP que ejecuta cualquier código que le haya pasado, sin ningún tipo de servidor. Entonces, desde la CLI, PHP no sabe nada sobre su servidor web que no se lo diga explícitamente.

Prueba:

$servername = trim(`hostname`);

Para obtener el nombre de host de la línea de comando , también debería ejecutar php -r. En Linux usé:

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

En Windows utilicé:

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

Además, cuando se accede a través de la consola, PHP no proporciona muchos de los valores clásicos de $ _SERVER, pero en el servidor al que accedí solo tiene las siguientes claves:

root@hermes:~# php -r 'foreach(

Para obtener el nombre de host de la línea de comando , también debería ejecutar php -r. En Linux usé:

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

En Windows utilicé:

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

Además, cuando se accede a través de la consola, PHP no proporciona muchos de los valores clásicos de $ _SERVER, pero en el servidor al que accedí solo tiene las siguientes claves:

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

Puede agregar su script php a la línea de comando que establecerá $ _SERVER ['SERVER_NAME'] para usted. Así es como lo estoy usando:

  

C: \ SDK \ php-5.5.25-Win32-VC11-x86 \ php.exe -S localhost: 8080 -t   D: \ Proyectos \ Sitios \ mysite router.php

router.php

<?php

Puede agregar su script php a la línea de comando que establecerá $ _SERVER ['SERVER_NAME'] para usted. Así es como lo estoy usando:

  

C: \ SDK \ php-5.5.25-Win32-VC11-x86 \ php.exe -S localhost: 8080 -t   D: \ Proyectos \ Sitios \ mysite router.php

router.php

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

Llame a la CLI y use el comando gethostname:

php -r "echo gethostname();"

Impresiones:

your_hostname

¿Posiblemente porque si ejecuta un script desde la línea de comando, no hay ningún servidor involucrado?

Uno de estos puede tener el nombre del servidor:

print_r(

Uno de estos puede tener el nombre del servidor:

<*>

Me da el nombre del servidor.

SERVER) var_dump(

Uno de estos puede tener el nombre del servidor:

<*>

Me da el nombre del servidor.

SERVER) echo

Uno de estos puede tener el nombre del servidor:

<*>

Me da el nombre del servidor.

SERVER['HOSTNAME']

Me da el nombre del servidor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top