2008-10-17 1 views
5

스크립트가 Apache에서 실행될 때 전자 메일 메시지를보고하는 오류에 $_SERVER['SERVER_NAME'] 값을 삽입합니다.로컬 호스트 이름을 제공하는 PHP 함수 또는 변수가 있습니까?

그러나 웹 스크립트가 nohup php ... 인 "작업자"작업을 포크하는 경우 $_SERVER['SERVER_NAME']이 비어있는 것처럼 보입니다. 따라서 오류가 발생하면 호스트 이름없이보고됩니다.

Unix hostname 명령을 호출하지 않고도 PHP를 통해 호스트 이름을 안정적으로 얻을 수 있습니까?

답변

14

php_uname("n")

(PHP 4> = 4.0.2, PHP 5)
php_uname 일 - 운영 체제 PHP에 대한 정보는()

php_uname에서 실행에 대한 설명을 반환 반환 운영 체제 PHP는 입니다. 이것은 phpinfo() 출력 맨 위에 표시되는 것과 동일한 문자열입니다. 운영체제의 이름으로는 PHP_OS 상수를 사용하는 을 고려해야하지만이 상수에는 PHP가 구축 된 운영체제 이 포함되어 있습니다.

일부 이전 UNIX 플랫폼에서는 현재 OS 정보를 확인하지 못할 수 있으며,이 경우 OS PHP가 빌드 된 표시로 되돌아갑니다. 이것은 uname() 라이브러리 호출이 존재하지 않거나 작동하지 않는 경우에만 발생합니다.

0

_GLOBALS['MACHINENAME']을 사용하면 globalsarray에서 직접 정보를 얻을 수 있습니다. PHP >= 5.3.0 use this를 들어

1

:

$hostname = gethostname();

PHP < 5.3.0 but >= 4.2.0 use this 경우 :

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

$hostname = php_uname('n');

PHP < 4.2.0를 들어 당신이 이들 중 하나를 시도 할 수 있습니다