Existe uma função PHP ou variável dando o nome do host local?
Pergunta
Quando um script é executado sob Apache, eu inserção valor $_SERVER['SERVER_NAME']
em um erro informando mensagem de e-mail.
No entanto, se um script Web bifurca um trabalho "trabalhador" com nohup php ...
, $_SERVER['SERVER_NAME']
parece estar vazio lá. Assim, se ocorrer um erro, é relatado sem um nome de host.
Posso obter de forma confiável o nome do host por meio de PHP, sem chamar comando hostname
Unix?
Solução
(PHP 4> = 4.0.2, PHP 5)
php_uname - Retorna informações sobre o operando PHP sistema está sendo executado emphp_uname () retorna uma descrição do sistema operacional PHP é sendo executado. Esta é a mesma seqüência que você vê no topo do phpinfo () de saída. Para o nome de apenas o sistema operacional, considere usando a constante PHP_OS, mas tenha em mente esta constante conterá o sistema operacional PHP foi construído.
Em algumas plataformas UNIX mais antigos, pode não ser capaz de determinar o informações OS atual caso em que ele irá reverter para exibir o OS PHP foi construído. Isso só vai acontecer se o uname () biblioteca chamada ou não existe ou não funciona.
Outras dicas
Para PHP> = 5.3.0 uso deste :
$hostname = gethostname();
Para PHP <5.3.0 mas> = 4.2.0 uso deste :
$hostname = php_uname('n');
Para PHP <4.2.0 você pode tentar um destes:
$hostname = getenv('HOSTNAME');
$hostname = trim(`hostname`);
$hostname = preg_replace('#^\w+\s+(\w+).*$#', '$1', exec('uname -a'));
Você pode usar _GLOBALS['MACHINENAME']
para obter as informações diretamente da globals
array
.