Beste manier om hostnaam te krijgen met php

Ik heb een php-toepassing die op verschillende servers en op al onze ontwikkelaarslaptops is geïnstalleerd. Ik heb een snelle en betrouwbare manier nodig om de hostnaam van de server of een andere unieke en betrouwbare systeemidentificatie te krijgen. Dit is wat we tot nu toe hebben bedacht:

<? $hostname = (!empty($_ENV["HOSTNAME"])) ? $_ENV["HOSTNAME"] : env('HOSTNAME'); ?>

<? $hostname = gethostbyaddr($_SERVER['SERVER_ADDR']); ?>

<? $hostname = exec('hostname'); ?>

Wat denk je?


Antwoord 1, autoriteit 100%

Hoe zit het met gethostname()?

Bewerken: dit is misschien geen optie, denk ik, afhankelijk van je omgeving. Het is nieuw in PHP 5.3. php_uname(‘n’)kan als alternatief werken.


Antwoord 2, autoriteit 93%

Voor PHP >= 5.3.0 gebruik dit:

$hostname = gethostname();

Voor PHP < 5.3.0 maar >= 4.2.0 gebruik dit:

$hostname = php_uname('n');

Voor PHP < 4.2.0 gebruik dit:

$hostname = getenv('HOSTNAME'); 
if(!$hostname) $hostname = trim(`hostname`); 
if(!$hostname) $hostname = exec('echo $HOSTNAME');
if(!$hostname) $hostname = preg_replace('#^\w+\s+(\w+).*$#', '$1', exec('uname -a')); 

Antwoord 3, autoriteit 7%

Je zou ook kunnen gebruiken…

$hostname = getenv('HTTP_HOST');

Antwoord 4, autoriteit 5%

Het geaccepteerde antwoord gethostname() geeft mogelijk een onjuiste waarde, zoals in mijn geval

gethostname()         = my-macbook-pro     (incorrect)
$_SERVER['host_name'] = mysite.git         (correct)

De waarde van gethostname() is duidelijk verkeerd. Wees er voorzichtig mee.

Update zoals gecorrigeerd door de opmerking

Hostnaam geeft je computernaam, geen websitenaam, my bad. Mijn resultaat op de lokale computer is

gethostname()         = my-macbook-pro     (which is my machine name)
$_SERVER['host_name'] = mysite.git         (which is my website name)

Antwoord 5, autoriteit 2%

php_unamemaar ik weet niet zeker welke hostnaam je hebt wil de hostnaam van de client of server.

plus u moet een op cookies gebaseerde benadering gebruiken


Antwoord 6, autoriteit 2%

Ik gebruik PHP versie 5.4 op shared hosting en beide geven beide met succes dezelfde resultaten:

php_uname('n');
gethostname();

Other episodes