Esiste una funzione o variabile PHP che fornisce il nome host locale?
Domanda
Quando uno script viene eseguito in Apache, inserisco $_SERVER['SERVER_NAME']
valore in un errore che segnala un messaggio di posta elettronica.
Tuttavia, se uno script Web genera un " worker " il lavoro con nohup php ...
, hostname
sembra essere vuoto lì. Pertanto, se si verifica un errore, viene segnalato senza un nome host.
Posso ottenere in modo affidabile il nome host tramite PHP, senza chiamare il comando Unix <=>?
Soluzione
(PHP 4 > = 4.0.2, PHP 5)
php_uname & # 8212; Restituisce informazioni sul sistema operativo su cui è in esecuzione PHPphp_uname () restituisce una descrizione del sistema operativo che è PHP in esecuzione. Questa è la stessa stringa che vedi all'inizio del file phpinfo () output. Per il nome del solo sistema operativo, considerare usando la costante PHP_OS, ma tieni presente che questa costante conterrà il sistema operativo su cui è stato basato PHP.
Su alcune piattaforme UNIX meno recenti, potrebbe non essere possibile determinare il file informazioni sul sistema operativo corrente nel qual caso tornerà alla visualizzazione di OS PHP è stato sviluppato. Questo accadrà solo se la tua libreria uname () la chiamata non esiste o non funziona.
Altri suggerimenti
Per PHP > = 5.3.0 usa questo :
$hostname = gethostname();
Per PHP < 5.3.0 ma & Gt; = 4.2.0 usare questo :
$hostname = php_uname('n');
Per PHP < 4.2.0 puoi provare uno di questi:
$hostname = getenv('HOSTNAME');
$hostname = trim(`hostname`);
$hostname = preg_replace('#^\w+\s+(\w+).*$#', '$1', exec('uname -a'));
Puoi usare _GLOBALS['MACHINENAME']
per ottenere le informazioni direttamente da globals
array
.