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?

Foi útil?

Solução

php_uname ( "n")

(PHP 4> = 4.0.2, PHP 5)
php_uname - Retorna informações sobre o operando PHP sistema está sendo executado em

php_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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top