Queries PHP's environment settings, and provides an abstraction for standardizing expected environment values across varying platforms, as well as specify custom environment flags.

Parameters

  • string $key The environment variable required.

Returns

string The requested variables value.

Source

						public function env($key) {
		if (strtolower($key) == 'base') {
			return $this->_base;
		}

		if ($key == 'SCRIPT_NAME' && !isset($this->_env['SCRIPT_NAME'])) {
			if ($this->_env['PLATFORM'] == 'CGI' || isset($this->_env['SCRIPT_URL'])) {
				$key = 'SCRIPT_URL';
			}
		}

		$val = array_key_exists($key, $this->_env) ? $this->_env[$key] : getenv($key);
		$this->_env[$key] = $val;

		if ($key == 'REMOTE_ADDR') {
			foreach (array('HTTP_X_FORWARDED_FOR', 'HTTP_PC_REMOTE_ADDR') as $altKey) {
				if ($addr = $this->env($altKey)) {
					$val = $addr;
					break;
				}
			}
		}

		if ($val !== null && $val !== false && $key !== 'HTTPS') {
			return $val;
		}

		switch ($key) {
			case 'HTTPS':
				if (isset($this->_env['SCRIPT_URI'])) {
					return (strpos($this->_env['SCRIPT_URI'], 'https://') === 0);
				}
				if (isset($this->_env['HTTPS'])) {
					return (!empty($this->_env['HTTPS']) && $this->_env['HTTPS'] !== 'off');
				}
				return false;
			case 'SERVER_ADDR':
				if (empty($this->_env['SERVER_ADDR']) && !empty($this->_env['LOCAL_ADDR'])) {
					return $this->_env['LOCAL_ADDR'];
				}
				return $this->_env['SERVER_ADDR'];
			case 'SCRIPT_FILENAME':
				if ($this->_env['PLATFORM'] == 'IIS') {
					return str_replace('\\\\', '\\', $this->env('PATH_TRANSLATED'));
				}
				return $this->env('DOCUMENT_ROOT') . $this->env('PHP_SELF');
			case 'DOCUMENT_ROOT':
				$fileName = $this->env('SCRIPT_FILENAME');
				$offset = (!strpos($this->env('SCRIPT_NAME'), '.php')) ? 4 : 0;
				$offset = strlen($fileName) - (strlen($this->env('SCRIPT_NAME')) + $offset);
				return substr($fileName, 0, $offset);
			case 'PHP_SELF':
				return str_replace('\\', '/', str_replace(
					$this->env('DOCUMENT_ROOT'), '', $this->env('SCRIPT_FILENAME')
				));
			case 'CGI':
			case 'CGI_MODE':
				return ($this->_env['PLATFORM'] == 'CGI');
			case 'HTTP_BASE':
				return preg_replace('/^([^.])*/i', null, $this->_env['HTTP_HOST']);
		}
	}