Existe-t-il une fonction ou une variable PHP donnant le nom de l'hôte local?
Question
Lorsqu'un script s'exécute sous Apache, j'insère une $_SERVER['SERVER_NAME']
valeur dans un message électronique de signalement d'erreur.
Cependant, si un script Web crée un " travailleur " travail avec nohup php ...
, hostname
semble y être vide. Ainsi, si une erreur se produit, elle est signalée sans nom d'hôte.
Puis-je obtenir de manière fiable le nom d'hôte au moyen de PHP, sans appeler la commande Unix <=>?
La solution
(PHP 4 > = 4.0.2, PHP 5)
php_uname & # 8212; Renvoie des informations sur le système d'exploitation PHP s'exécute surphp_uname () renvoie une description du système d'exploitation PHP. courir sur. C'est la même chaîne que vous voyez tout en haut de la phpinfo () en sortie. Pour le nom du système d'exploitation uniquement, considérez en utilisant la constante PHP_OS, mais gardez à l'esprit que cette constante contiendra le système d'exploitation PHP a été construit sur.
Sur certaines anciennes plates-formes UNIX, il peut ne pas être en mesure de déterminer la informations sur le système d'exploitation actuel, auquel cas, il revient à l'affichage de la OS PHP a été construit sur. Cela ne se produira que si votre bibliothèque uname () appel n’existe pas ou ne fonctionne pas.
Autres conseils
Pour PHP > = 5.3.0 utilisez cette :
$hostname = gethostname();
Pour PHP < 5.3.0 mais & Gt; = 4.2.0 utilisez ceci :
$hostname = php_uname('n');
Pour PHP < 4.2.0, vous pouvez essayer l’un de ceux-ci:
$hostname = getenv('HOSTNAME');
$hostname = trim(`hostname`);
$hostname = preg_replace('#^\w+\s+(\w+).*$#', '$1', exec('uname -a'));
Vous pouvez utiliser _GLOBALS['MACHINENAME']
pour obtenir les informations directement à partir de globals
array
.