¿Hay una función o variable PHP que proporcione el nombre de host local?
Pregunta
Cuando se ejecuta un script en Apache, inserto el valor $_SERVER['SERVER_NAME']
en un mensaje de correo electrónico de informe de error.
Sin embargo, si un script web bifurca un " trabajador " El trabajo con nohup php ...
, hostname
parece estar vacío allí. Por lo tanto, si se produce un error, se informa sin un nombre de host.
¿Puedo obtener de manera confiable el nombre de host mediante PHP, sin llamar al comando Unix <=>?
Solución
(PHP 4 > = 4.0.2, PHP 5)
php_uname & # 8212; Devuelve información sobre el sistema operativo PHP se ejecuta enphp_uname () devuelve una descripción del sistema operativo PHP es que se ejecuta en. Esta es la misma cadena que ves en la parte superior de la Salida phpinfo (). Para el nombre solo del sistema operativo, considere usando la constante PHP_OS, pero tenga en cuenta que esta constante contendrá el sistema operativo PHP fue construido.
En algunas plataformas UNIX anteriores, es posible que no pueda determinar el información actual del sistema operativo, en cuyo caso volverá a mostrar el OS PHP fue construido sobre. Esto solo sucederá si su biblioteca uname () la llamada no existe o no funciona.
Otros consejos
Para PHP > = 5.3.0 use esto :
$hostname = gethostname();
Para PHP < 5.3.0 pero & Gt; = 4.2.0 use esto :
$hostname = php_uname('n');
Para PHP < 4.2.0 puede probar uno de estos:
$hostname = getenv('HOSTNAME');
$hostname = trim(`hostname`);
$hostname = preg_replace('#^\w+\s+(\w+).*$#', '$1', exec('uname -a'));
Puede usar _GLOBALS['MACHINENAME']
para obtener la información directamente de globals
array
.